我有以下代码段
setlocal enableextensions enabledelayedexpansion
set b=123
for %%f in (.\input\*.mgc) do (
set "b=%%~nf"
echo %b%
)
我希望它输出没有扩展名的文件名,但我总是得到“123”。我总结说它有一些延迟扩展但不太确定问题来自哪里。我也试过echo !b!
,但在那种情况下它只输出“!b!”
答案 0 :(得分:1)
我相信有确凿的证据。我无法看到你执行代码,或者你根本不知道代码,所以这里是我执行你的代码。它就像我说的那样工作。
C:\BatchFiles\SO>type testing.bat
@echo off
setlocal enableextensions enabledelayedexpansion
set b=123
for %%f in (.\input\*.mgc) do (
echo %%~nf
set "b=%%~nf"
echo !b!
)
pause
C:\BatchFiles\SO>dir /b .\input\*.mgc
testfile.mgc
C:\BatchFiles\SO>testing.bat
testfile
testfile
Press any key to continue . . .
C:\BatchFiles\SO>
答案 1 :(得分:1)
尝试按照here所解释的%b%
替换!b!
:
应该延迟扩展的变量应该用感叹号代替百分号。
setlocal enableextensions enabledelayedexpansion
set b=123
for %%f in (.\input\*.mgc) do (
set "b=%%~nf"
echo !b!
)