2013-02-18 48 views
3

在Windows(XP及更高版本)的批处理文件需要知道它位于目录名的父文件夹的名称,只有文件夹名称,而不是整个路径,而不是批处理文件自己命名。获取当前正在执行的批处理脚本

所以存储在文件C:\ TEMP \ ABC \ script.cmd应该得到一个变量名 “ABC”。

如何做到这一点?

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

用于执行和可移植性的简单性,它必须是一个批处理文件(.CMD),不PowerShell的。

+1

重复http://stackoverflow.com/questions/3848597/bat-current-folder-name – 2013-02-18 10:55:24

+2

@Kayasax - 有一个更好的方式来获得父文件夹。 – dbenham 2013-02-18 12:16:59

回答

8

任何时候当你有文件的完整路径时,你可以简单地附加\..并使用带有正确修饰符的FOR循环来获取父文件夹名称。

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

不错的片段!+1 – 2013-02-18 12:54:28

相关问题