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

ygo*_*goe 3 variables path batch-file

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

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

怎么办?

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

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

dbe*_*ham 9

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

for %%A in ("%~f0\..") do set "myFolder=%%~nxA"
Run Code Online (Sandbox Code Playgroud)