Windows(XP 和更高版本)上的批处理文件需要知道它所在目录的名称。只有文件夹名称,而不是整个路径,也不是批处理文件名本身。
因此,存储在 C:\temp\abc\script.cmd 中的文件应该在变量中获得名称“abc”。
怎么可能呢?
通常的参数扩展如%~p0
只能提取整个路径(\temp\abc\),它们只适用于实际参数(%0、%1、%2...)而不适用于其他变量,因此它们不能堆叠或组合. 所以他们对于这项任务来说太有限了。该for
命令只能寻址从开始处定义位置的令牌,而不是“最后一个”或倒数第二个令牌。
为简化执行和可移植性,它必须是批处理文件 (.cmd),而不是 PowerShell。