批处理文件中 "call: exit, echo" 和 "exit, echo" 之间的区别
Difference between "call: exit, echo" and "exit, echo" in batch file
我遇到了一些关于以下批处理代码的困惑:
@echo off
Setlocal EnableDelayedExpansion
set rootpath=%1
if '%1'=='' (
call :ERR
REM Exit /b 1001
) else (
exit /b 0
)
echo %errorlevel%
goto :EOF
:ERR
Exit /b 1001
和
@echo off
Setlocal EnableDelayedExpansion
set rootpath=%1
if '%1'=='' (
REM call :ERR
Exit /b 1001
) else (
exit /b 0
)
echo %errorlevel%
goto :EOF
:ERR
Exit /b 1001
唯一的区别是第一个使用call而第二个不使用。此外,"echo" 不适用于第二个。谁能帮我理解这些问题?
exit /b n
做了两件事。它将 errorlevel
设置为 n
,然后将 returns 设置为调用当前例程的例程中的下一条指令。
所以在第一个 - call :err
将 errorlevel
和 returns 设置为显示 errorlevel
的 echo
,然后继续 :EOF
终止主程序。
或
终止主例程,已将 errorlevel
设置为 0
(取决于 if
是 true/false。)
第二个例程终止于 exit
已将 errorlevel
设置为 1001 或 0(取决于 if
为 true/false)并因此处理从未达到 echo
.
我遇到了一些关于以下批处理代码的困惑:
@echo off
Setlocal EnableDelayedExpansion
set rootpath=%1
if '%1'=='' (
call :ERR
REM Exit /b 1001
) else (
exit /b 0
)
echo %errorlevel%
goto :EOF
:ERR
Exit /b 1001
和
@echo off
Setlocal EnableDelayedExpansion
set rootpath=%1
if '%1'=='' (
REM call :ERR
Exit /b 1001
) else (
exit /b 0
)
echo %errorlevel%
goto :EOF
:ERR
Exit /b 1001
唯一的区别是第一个使用call而第二个不使用。此外,"echo" 不适用于第二个。谁能帮我理解这些问题?
exit /b n
做了两件事。它将 errorlevel
设置为 n
,然后将 returns 设置为调用当前例程的例程中的下一条指令。
所以在第一个 - call :err
将 errorlevel
和 returns 设置为显示 errorlevel
的 echo
,然后继续 :EOF
终止主程序。
或
终止主例程,已将 errorlevel
设置为 0
(取决于 if
是 true/false。)
第二个例程终止于 exit
已将 errorlevel
设置为 1001 或 0(取决于 if
为 true/false)并因此处理从未达到 echo
.