Batch file dos批处理下标如何更改最初在调用脚本中定义的变量?
dos批处理下标如何更改最初在调用脚本中定义的变量?例如,此脚本无法按预期增加VAR变量。这有点像我试图使用的“全局变量” 一只蝙蝠Batch file dos批处理下标如何更改最初在调用脚本中定义的变量?,batch-file,dos,Batch File,Dos,dos批处理下标如何更改最初在调用脚本中定义的变量?例如,此脚本无法按预期增加VAR变量。这有点像我试图使用的“全局变量” 一只蝙蝠 @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%
@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
2.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 . . .
与使用“cmd.exe/c two.bat
”不同,您应该使用“call two.bat
”,就像后面两行一样。这将在调用者环境的上下文中执行two.bat
,从而允许two.bat
访问变量GLOBALVAR
在
two.bat
的第3行中,写“GLOBALVAR
”而不是“VAR
”。这个输入(?)导致two.bat
过早退出,而没有更改GLOBALVAR
,并且,它不是VAR而是two.bat中的GLOBALVAR,对吗?啊!你说得对。我以为“cmd.exe/C”或“CALL”会给我同样的效果,但显然不是。