エラー後に.batファイルを継続させるにはどうすればよいですか


30

私は3つのことを行う.batファイルをWindowsに持っています

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6

cmd1が失敗することもありますが、それで問題ありません。cmd2とcmd3を続けて実行したいと思います。しかし、私のバットはcmd1で停止します。どうすればこれを回避できますか?

明確にするために更新 -これらは他の.batファイルではなく、exeコマンドです。うまくいけば、これを達成するためだけに.batファイルのツリーを構築する必要はありません。


を使用してコマンドを開始できるはずcmd /Cです。
デアホッホスタプラー

1
動作していないものの特定のコード例を示す必要があります。通常、コマンドがエラーで失敗した場合、バッチファイルは自動的に終了しません。構文エラーがある場合、バッチファイルは終了します。exeエラーでコードが終了する場合、その動作を引き起こしているロジックがコードに存在する必要があります。
-dbenham

回答:


18

別のオプションは、アンパスタンド(&)を使用することです

cmd1 & cmd2 & cmd3

ダブルを使用する場合、前のコマンドが正常に完了した場合のみ続行します(%ERRORLEVEL%==0

cmd1 && cmd2 && cmd3

二重パイプ(||)を使用する場合、前のコマンドがエラーコード(%ERRORLEVEL% NEQ 0)で完了した場合にのみ、次のコマンドを実行します

cmd1 || cmd2 || cmd3


引数も渡すときにこれを行うことはできますか?試してみたところ、うまくいきませんでした。
ConfusedNoob

@ConfusedNoob私はいつもやっています...私は機能するCHKDSK引数付きのコマンドを持っています。と入力check D: & check E: & check F:すると、動作します。BATファイルの引数には/perf /f /r /b /scanスイッチが含まれています
カナダのルークREINSTATE MONICA

2
いいね!いくつかの再試行を実装する方法のアイデアをもたらしました:cmd || cmd || ...成功するまで次の
コマンド

1
これにより長いスクリプトが読めなくなりますが、他に方法はありませんか?
2014年

1
@CanadianLuke Well batchは、Windowsバッチフレームワークです。何百ものコマンドを非対話的に実行するにはどうすればよいですか?パワーシェルにはより良いアプローチがありますか?そこに移動するのは悪いことですか?
2014年

11

コマンドが他の.batファイルであると仮定すると、次のようなコマンドがスタックされます。

 call cmd1
 call cmd2
 call cmd3

10

これは私のために働いた:

cmd.exe /c cmd1 arg1
cmd2
...

これはcmd.exe、Windowsコマンドインタープリターの新しいインスタンスでコマンドを実行するために使用されるため、失敗したコマンドがバッチスクリプトを中断することはありません。/cフラグは、実行中のコマンドが終了するや否や終了させるために通訳を伝えます。

cmd2最初のコマンドが失敗しても実行されます。詳細についてはcmd /?、Windowsコマンドプロンプトを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.