【发布时间】:2016-12-09 18:30:30
【问题描述】:
我有以下代码 sn-p
setlocal enableextensions enabledelayedexpansion
set b=123
for %%f in (.\input\*.mgc) do (
set "b=%%~nf"
echo %b%
)
我希望它输出没有扩展名的文件名,但我总是得到“123”。我的结论是它有一些延迟扩展的东西,但不太确定问题出在哪里。我也试过echo !b!,但在那种情况下它只输出“!b!”
【问题讨论】:
-
关于 cmd.exe 如何扩展变量值的常见误解。您需要将变量引用为
echo !b! -
@Squashman 我在我的问题中写道,我已经尝试过了,但没有结果
-
echo !b!显示文字!b!只有两种方式 - 要么您没有使用setlocal enabledelayedexpansion,要么输入目录中的一个文件名为!b!.mgc。这些实际上是您的输出可能的唯一两种方式。如果没有设置b并且延迟扩展实际上像您声称的那样开启,您会看到错误ECHO is off.
标签: batch-file for-loop