dos批量下标如何更改最初在调用脚本中定义的var?

时间:2013-06-24 19:01:13

标签: batch-file dos

dos批量下标如何更改最初在调用脚本中定义的var?例如,此脚本无法按预期增加VAR变量。这就像我试图使用的“全局变量”。

one.bat

@echo off
ENDLOCAL
SET /A GLOBALVAR=0
cmd.exe /C two.bat
ECHO ERRORLEVEL after cmd.exe : %ERRORLEVEL%
CALL two.bat
ECHO ERRORLEVEL after CALL : %ERRORLEVEL%
ECHO GLOBALVAR=%GLOBALVAR%
pause

two.bat

@ECHO off
:: error if GLOBALVAR variable not detected
IF NOT DEFINED GLOBALVAR EXIT /B 9
SET /A GLOBALVAR=%GLOBALVAR%+1
EXIT /B 0

输出:

ERRORLEVEL after cmd.exe : 0
ERRORLEVEL after CALL : 0
GLOBALVAR=1
Press any key to continue . . .

1 个答案:

答案 0 :(得分:2)

您应该使用“cmd.exe /c two.bat”而不是使用“call two.bat”,而不是像以后那样使用“two.bat”。这会在调用者环境的上下文中执行two.bat,从而使GLOBALVAR访问变量two.bat

GLOBALVAR的第3行,写下“VAR”而不是“two.bat”。这个拼写错误(?)导致GLOBALVAR过早退出而不更改{{1}}。