.batファイルがあります。次のように見えます
....many commands1
ftp -i -s:copy.txt
...many commands2
copy.txtには次のコマンドが含まれています
open ...
login
password
get file
bye
.batファイルを実行すると、次に機能します
many commands1
ftp commands
しかし、多くのコマンド2はまだ実行されていません。
コマンドの1つが、コマンドを使用せずにcommand2
バッチファイルを呼び出している(起動している)可能性があるようCALL
です。(下部には、使用する場合と使用しない場合の結果を説明する2つのフローチャートがありCALL
ます。)**を使用する場合と使用しない場合の結果を参照してくださいCALL
。
私の最初の勘が正しくない場合は、バッチファイルをデバッグするための手順を開始する必要があります。
ステートメントをコメントアウトし、バッチファイルにいくつかの@ECHO OFF
ステートメントを入れます。これは、エラーを見つけるのに役立ちます。また、コードでバッチファイルを実行する場合は、このコマンドを使用する必要があります。edバッチファイルの実行が終了した後も、ingバッチファイルの実行を続行してください。また、ステートメントを含むバッチファイルがある場合は、制御がingファイルに戻った後も引き続き適用されることに注意してください。例えば:PAUSE
ECHO
CALL
CALL
CALL
CALL
ECHO OFF
ECHO OFF
CALL
:: 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
。これらの2つのバッチファイルを想定します。
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
ただし、ファイルSECOND.BAT
の行をに変更すると、実行のフローは次のようになります。RUN.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