コピーとxcopyコマンドのロードを行うバッチファイルがあります。失敗した場合はgotoラベルへのコピーから飛び越す必要がありますが、非常に不便です単一のコピーごとにエラーレベルをチェックする必要があります。すべてのエラーレベルをカバーするWindowsバッチファイル
私はそれが可能ではないかもしれないと思っていますが、私はcopys/xcopysの巨大なブロックを実行し、errorlevelがゼロ以上になったかどうかを最後に確認できますか?
コピーとxcopyコマンドのロードを行うバッチファイルがあります。失敗した場合はgotoラベルへのコピーから飛び越す必要がありますが、非常に不便です単一のコピーごとにエラーレベルをチェックする必要があります。すべてのエラーレベルをカバーするWindowsバッチファイル
私はそれが可能ではないかもしれないと思っていますが、私はcopys/xcopysの巨大なブロックを実行し、errorlevelがゼロ以上になったかどうかを最後に確認できますか?
サブルーチンでアクションをラップすることができます。
@echo off
setlocal enabledelayedexpansion
set waserror=0
call:copyIt "copy", "c:\xxx\aaa.fff", "c:\zzz\"
call:copyIt "xcopy /y", "c:\xxx\aaa.fff", "c:\zzz\"
call:copyIt "copy", "c:\xxx\aaa.fff", "c:\zzz\"
call:copyIt "copy", "c:\xxx\aaa.fff", "c:\zzz\"
goto:eof
:copyIt
if %waserror%==1 goto:eof
%~1 "%~2" "%~3"
if !ERRORLEVEL! neq 0 goto:failed
goto:eof
:failed
@echo.failed so aborting
set waserror=1
変数を単純な「マクロ」として機能させることができます。多くの入力を省き、どちらかといえば悪くはありません。
@echo off
setlocal
set "copy=if errorlevel 1 (goto :error) else copy"
set "xcopy=if errorlevel 1 (goto :error) else xcopy"
%copy% "somepath\file1" "location"
%copy% "somepath\file2" "location"
%xcopy% /s "sourcePath\*" "location2"
rem etc.
exit /b
:error
rem Handle your error
ここでEDIT
は、任意のcommmandで動作するはずがより汎用的なマクロ版です。マクロソリューションは、CALLを使用するよりもはるかに高速です。
これはすばらしい、thankyou =) –
なぜ拡張は遅くなるのですか? pathのいずれかに '!'が含まれていると、遅延展開によって問題が発生します。 IF文にwaserrorを設定してgotoを削除しないのはなぜですか?失敗しましたか? – dbenham