当前位置: 动力学知识库 > 问答 > 编程问答 >

windows - Why does this batch variable never change even when set?

问题描述:

@echo off

SET first=0

FOR %%N IN (hello bye) DO (

SET first=1

echo %first%

echo %%N

)

It seems that the variable "first" is always 0. Why?

网友答案:

With batch files, variables are expanded when their command is read - so that would be as soon as the for executes. At that point, it no longer says echo %first%, it literally says echo 0, because that was the value at the point of expansion.

To get around that, you need to use delayed expansion by surrounding your variable name with ! instead of % - so that would be echo !first!. This may require you to start cmd.exe with the /V parameter, or use setlocal enabledelayedexpansion in the beginning of your batch file (just after echo off).

If you type set /?, you'll see a much more detailed explanation of this at the end of the output.

分享给朋友:
您可能感兴趣的文章:
随机阅读: