如果此代码保存为文件tst.bat:
@echo off
for %%a in (%1) do (
echo "%%~fa"
set b=%%~fa
echo "%b%"
)
然后按如下方式调用两次,我希望得到这个:
C:\Windows\Temp>tst.bat abc
"C:\Windows\Temp\abc"
"C:\Windows\Temp\abc"
C:\Windows\Temp>tst.bat xyz
"C:\Windows\Temp\xyz"
"C:\Windows\Temp\xyz"
但相反,我明白了:
C:\Windows\Temp>tst.bat abc
"C:\Windows\Temp\abc"
""
C:\Windows\Temp>tst.bat xyz
"C:\Windows\Temp\xyz"
"C:\Windows\Temp\abc"
我的期望是否错误?
答案 0 :(得分:1)
曾几何时,有人为我即将给出的答案写了一篇很好的介绍,但我无法找到答案。基本上,如果你想在循环的for
循环更新中包含变量,你需要使用delayedexpansion。
@echo off
setlocal enabledelayedexpansion
for %%a in (%1) do (
echo "%%~fa"
set b=%%~fa
echo "!b!"
)