获取当前正在执行的批处理脚本的父文件夹名称

时间:2013-02-18 10:45:43

标签: variables batch-file path

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

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

怎么办呢?

%~p0这样的常用参数扩展只能提取整个路径(\ temp \ abc \),它们只能处理真实参数(%0,%1,%2 ...)而不能处理其他变量,所以它们不能堆叠或组合。所以他们对这项任务太有限了。 for命令只能从开头处定位到定义位置的标记,而不是“最后”或倒数第二个标记。

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

1 个答案:

答案 0 :(得分:8)

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

for %%A in ("%~f0\..") do set "myFolder=%%~nxA"