在Windows(XP及更高版本)上的批处理文件需要知道它所在的目录名称,只需要文件夹名称,而不是整个路径和批处理文件名称本身。因此,存储在C:\temp\abc\script.cmd中的文件应该将名称“abc”作为变量。如何实现呢?通常的参数扩展(例如%~p0)只能提取整个路径(\temp\abc\),并且它们仅适用于实际参数(%0、%1、%2...),而不能堆叠或组合其他变量。因此,它们对于此任务过于受限。for命令只能从开始处访问定义位置的标记,而无法访问“最后”或“倒数第二”标记。为了执行简单和可移植性,必须是批处理文件(.cmd),而不是PowerShell。