3

Windows(XP 和更高版本)上的批处理文件需要知道它所在目录的名称。只有文件夹名称,而不是整个路径,也不是批处理文件名本身。

因此,存储在 C:\temp\abc\script.cmd 中的文件应该在变量中获得名称“abc”。

怎么可能呢?

通常的参数扩展如%~p0只能提取整个路径(\temp\abc\),它们只适用于实际参数(%0、%1、%2...)而不适用于其他变量,因此它们不能堆叠或组合. 所以他们对于这项任务来说太有限了。该for命令只能寻址从开始处定义位置的令牌,而不是“最后一个”或倒数第二个令牌。

为简化执行和可移植性,它必须是批处理文件 (.cmd),而不是 PowerShell。

4

1 回答 1

9

只要您拥有文件的完整路径,您就可以简单地附加\..并使用带有正确修饰符的 FOR 循环来获取父文件夹名称。

for %%A in ("%~f0\..") do set "myFolder=%%~nxA"
于 2013-02-18T12:21:14.980 回答