【问题标题】:Why does this batch variable never change even when set?为什么即使设置了这个批处理变量也不会改变?
【发布时间】:2010-10-16 17:31:56
【问题描述】:
@echo off
SET first=0
FOR %%N IN (hello bye) DO (
SET first=1
echo %first%
echo %%N
)

好像变量“first”总是0,为什么?

【问题讨论】:

标签: windows batch-file


【解决方案1】:

对于批处理文件,变量在其命令被读取时会被展开——这样一来for 就会执行。那时,它不再是 echo %first%,而是字面上的 echo 0,因为那是扩展点的值。

要解决这个问题,您需要使用延迟扩展,将变量名称用! 而非% 括起来——这样就可以是echo !first!。这可能需要您使用 /V 参数启动 cmd.exe,或者在批处理文件的开头使用 setlocal enabledelayedexpansion(紧跟在 echo off 之后)。

如果您输入set /?,您将在输出末尾看到更详细的说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-19
    • 2011-07-07
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2012-07-04
    相关资源
    最近更新 更多