它听起来就像您的一个command2 命令可能正在调用(启动)一个批处理文件而不使用CALL 命令。 (底部有两个流程图,说明使用和不使用CALL的后果。)见**使用和不使用CALL的后果。
如果我最初的预感不正确,您需要开始采取措施来调试您的批处理文件。
注释掉任何@ECHO OFF 语句并将一些PAUSE 甚至ECHO 语句放入您的批处理文件中。这将帮助您找到错误。另外,请记住,如果您希望代码执行批处理文件,则需要使用CALL 命令,然后在完成执行CALLed 批处理文件后继续执行CALLing 批处理文件。另外,请注意,如果您 CALL 任何包含 ECHO OFF 语句的批处理文件,即使在控制权返回到 CALLing 文件后,ECHO OFF 仍将继续执行。例如:
:: For debugging porpuses we leave `ECHO` in it's default `ON` state
REM @echo off
:: Execute your leading commands:
commands1
:: If you prefer, because you know that your problem comes after this point;
:: You can, if you want, leave the leading `ECHO OFF` command alone, and
:: instead, put an `ECHO ON` statement here:
echo on
ftp -i -s:copy.txt
ECHO Back from FTPing...
pause
:: Calling command2.1.exe
command2.1.exe
echo Back from command2.1.exe
pause
:: Calling command2.2.bat
CALL command2.2.bat
:: Since Command2.2.bat contains an ECHO OFF statement
:: we'll turn `ECHO` back on again for debugging purposes.
ECHO ON
echo Back from command2.2.bat
pause
使用和不使用CALL的后果。
假设这两个批处理文件:
RUN.BAT
@ECHO OFF
ECHO Starting: RUN.BAT
(Misc commands)
:: 'Calling' SECOND.BAT without useing `CALL`
SECOND.BATCH
:: Back from SECOND.BAT
ECHO Back from second.bat
SECOND.BAT
@echo off
ECHO Running: SECOND.BAT
没有CALL 语句的执行流程将像这样移动:
C:\> RUN.BAT<kbd>ENTER</kbd>
|
\|/
v
@echo off
echo Running
(misc commands)
|
\|/
v
SECOND.BAT ----> @echo off
echo Running Seond.bat
(misc commands)
|
\|/
v
END
但是如果你把RUN.BAT文件中的SECOND.BAT这一行改成CALL SECOND.BAT,执行的流程是这样的:
C:\> RUN.BAT<kbd>ENTER</kbd>
|
\|/
v
@echo off
echo Running
(misc commands)
|
\|/
v
SECOND.BAT ----> @echo off
echo Running Seond.bat
(misc commands)
|
\|/
v
:: Back from SECOND.BAT <--+
|
\|/
v
ECHO Back from second.bat
|
\|/
v
END