バッチ ファイル (通常の *.bat ファイル) で、ファイルが存在するかどうかを確認します。存在する場合はコピーする必要があり、存在しない場合は出力をシェルに書き込む必要があります。if ステートメントの後、(可能な) コピー コマンドが正常に実行されたかどうかを確認します。私はエラーレベルチェックでそれをやっています。
しかし、if ステートメントは機能しているように見えますが、ステートメントの後のエラーレベルは常に 1 です。ファイルが存在しない場合、それぞれのメッセージがシェルに書き込まれるため、if ステートメントが機能することがわかっています。
コードは次のとおりです。
if errorlevel 1 goto error
...
if exist %my_path_and_file% (
copy %my_path_and_file% %my_target_path_and_file%
) ELSE (
echo File %immo_path_and_file% does not exist
)
if errorlevel 1 goto error
...
:error
...
正しい出力は File xxx does not exist であり、if ステートメントは正常に実行されたように見えますが、if ステートメントの後でエラーレベルが常に 1 になるのはなぜですか?
解決済み: 私の間違いです。errorlevel は、IF ステートメントの前に別のステートメントによって 1 に設定されました。また、上記の投稿コードで最初のエラーレベル チェックを置き忘れました。申し訳ありません。最初のチェックと IF ステートメントの間に、エラーレベルが 0 に設定されたコードがありました。ここで修正します。すべての回答に感謝します!