Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file dos批处理下标如何更改最初在调用脚本中定义的变量?_Batch File_Dos - Fatal编程技术网

Batch file dos批处理下标如何更改最初在调用脚本中定义的变量?

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%

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%
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”会给我同样的效果,但显然不是。