web-dev-qa-db-ja.com

最初のコマンドの後にバッチファイルの実行が停止する

ツール「HTML Match」を使用して、2つのHTMLファイルを比較しています。多くのファイルを比較する必要があるため、次のようなバッチファイルを作成します。たとえば、5セットのファイルのみを提供します。

cd "C:\Program Files\HTML Match"
HTMLMATCH.EXE "D:\Raj\compare1\a1.html" "D:\Raj\compare2\a1.html" "D:\Raj\compare_res\a1.html"
HTMLMATCH.EXE "D:\Raj\compare1\a2.html" "D:\Raj\compare2\a2.html" "D:\Raj\compare_res\a2.html"
HTMLMATCH.EXE "D:\Raj\compare1\a3.html" "D:\Raj\compare2\a3.html" "D:\Raj\compare_res\a3.html"
HTMLMATCH.EXE "D:\Raj\compare1\a4.html" "D:\Raj\compare2\a4.html" "D:\Raj\compare_res\a4.html"
HTMLMATCH.EXE "D:\Raj\compare1\a5.html" "D:\Raj\compare2\a5.html" "D:\Raj\compare_res\a5.html"

このバッチファイルをcmdプロンプトで実行すると、最初の行、つまり「a1.html」のみが比較され、結果が生成されます。その後、実行が停止します。

66
rajashekar

実行しているコマンドの前にcallを追加します。

これをforループに変更することもできます。

FOR /L %i in (1,1,5) DO CALL HTMLMATCH.EXE D:\Raj\compare%i%\a%i%.html D:\Raj\compare%i%\a%i%.html D:\Raj\compare_res\a%i%.html
104
Ben

あなたの問題に対する答えは、CALL HTMLMATCH.EXE(およびその他のパラメーター)。バッチファイル内のすべての実行可能コマンドの前でCALLを使用するだけです。

53
BJoe

スペースマークの間に引用符を挿入する必要はありません。

それを試してください:

HTMLMATCH.EXE D:\Raj\compare1\a1.html D:\Raj\compare2\a1.html D:\Raj\compare_res\a1.html

たぶんそれはあなたの問題を解決するでしょう。

0
Adrian K.

私は本当に似たようなものを探していて、ここに残ったすべての返信を試しましたが、最終的に私の問題の解決策を見つけました!

私のスクリプトでは、1つのプロセスが実行されているかどうかを確認し、そうでない場合はそれを起動し(.exe)、別のプロセスが実行されているかどうかを確認します最初の.exeが開始されたが、プロセスが終了するまで待機していたため、2番目の.exeに移動しなかったこと。最終的にstartで私のために働いており、魔法が付属しています...

/ separate

それは私のために:

start "program1" /separate program1.exe
other commands

それが閉じられるまで待っていたため、program1を開始した後に停止する前に、私は思うが、これは開いたままにしたかったので、これは起こらないだろう。 start/separateを使用して、他のコマンドを続行します。

私はそれを 別のフォーラム で見つけましたが、問題はそれがマニュアルだということです。/separateは別のメモリ空間で起動するために使用されます。

0
testfailed