当我将%0
的驱动器号存储到变量中时,我遇到了一些意外的输出。
以下代码片段从C:\Temp\Test运行:
@echo off
for %%I in ("%~0") do set "Target=%%~dI"
echo Target: %Target%
pushd %Target% && echo Current: %CD% || echo Failed to change dir!
这条命令可以输出正确的目标
的值,但是不能输出当前目录的值:
Target: C:
Current: C:\Temp\Test
预期输出:
Target: C:
Current: C:\
我也尝试了使用延迟扩展相同的代码,但这也没有起作用。有人可以解释一下这是怎么回事吗?
pushd %dp0
中的尾随反斜杠是关键,谢谢! :) - Andreas