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

Variables 获取当前正在执行的批处理脚本的父文件夹名称,variables,batch-file,path,Variables,Batch File,Path,Windows(XP及更高版本)上的批处理文件需要知道其所在目录的名称。只有文件夹名,而不是整个路径,也不是批处理文件名本身 因此,存储在C:\temp\abc\script.cmd中的文件应在变量中获得名称“abc” 如何做到这一点 通常的参数扩展(如%~p0)只能提取整个路径(\temp\abc\),它们只对实参数(%0、%1、%2…)有效,而对其他变量无效,因此不能对它们进行叠加或组合。所以对于这项任务来说,它们太有限了。for命令只能从一开始就在定义的位置寻址令牌,而不是“最后一个”或第

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

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

如何做到这一点

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


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

任何时候,只要添加文件的完整路径,就可以添加
\..
,并使用带有正确修饰符的For循环来获取父文件夹名称

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

重复@Kayasax-有一种更好的方法来获取父文件夹。