0

バッチ ファイル (通常の *.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 に設定されたコードがありました。ここで修正します。すべての回答に感謝します!

4

2 に答える 2

2

if existerrorlevelファイルが存在しなくても、 を設定しません:

C:\Users>存在する場合は qwerty (echo true) そうでない場合は echo false
間違い

C:\Users>echo %errorlevel%
0

C:\Users>存在する場合 qwerty rem

C:\Users>echo %errorlevel%
0
于 2014-01-09T13:30:39.687 に答える
0

試してみてください

if %errorLevel% == 1 (
    goto error
) else (
    echo ok
)
于 2014-01-09T12:26:13.283 に答える