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 . . .
答案 0 :(得分:2)
您应该使用“cmd.exe /c two.bat
”而不是使用“call two.bat
”,而不是像以后那样使用“two.bat
”。这会在调用者环境的上下文中执行two.bat
,从而使GLOBALVAR
访问变量two.bat
。
在GLOBALVAR
的第3行,写下“VAR
”而不是“two.bat
”。这个拼写错误(?)导致GLOBALVAR
过早退出而不更改{{1}}。