web-dev-qa-db-ja.com

Windows cmdスクリプトから複数のコマンドを実行する

Windows cmdスクリプトを作成して、いくつかのタスクを連続して実行しようとしています。ただし、スクリプトの最初のコマンドの後に常に停止します。

その後停止するコマンドはMavenビルドです(それが関連するかどうかはわかりません)。

各タスクを順番に実行して実行するにはどうすればよいですか?

ソフトウェアのインストールやレジストリの設定などは完全に問題外です。VanillaWindows XPインストールで動作する必要があります。

理想的には、コマンドのいずれかが失敗した場合にスクリプトを中止したいのですが、それは「必要なもの」であり、必須ではありません。

ありがとう。

133
Darren Greaves

別の.batファイルを呼び出すとき、呼び出しの前に「呼び出し」が必要だと思います。

call otherCommand.bat
136
Lou Franco

最初のコマンドが成功した場合にのみ、コマンド間に&&記号を使用して2番目のコマンドを実行できます。詳細はこちら http://commandwindows.com/command1.htm

45
Steve

最初のコマンドが停止する理由がわかりません。並列化できる場合は、次のようなものを試すことができます

start cmd.exe /C 1.bat      
start cmd.exe /C 2.bat
25
Gulzar Nazim

私はちょうど、バッチスクリプトを作成してMavenテストスクリプトを実行するのとまったく同じタスクを実行しています。問題は、mvn clean installでmaven scripsを呼び出すこと自体がスクリプトであるため、call mvn clean installで行う必要があることです。

動作するコード

rem run a maven clean install
cd C:\rbe-ui-test-suite 
call mvn clean install
rem now run through all the test scripts
call mvn clean install -Prun-integration-tests -Dpattern=tc-login
call mvn clean install -Prun-integration-tests -Dpattern=login-1

呼び出しの使用に注意してください。これにより、バッチファイルで連続したMavenスクリプトを使用できるようになります。

23
mhollander38

ダブルアンパサンドを使用すると、最初のコマンドが成功した場合にのみ、2番目のコマンドが実行されます。

cd Desktop/project-directory && atom .

1つのアンパサンドのみを使用すると、最初のコマンドが失敗した場合でも両方のコマンドを実行しようとします。

cd Desktop/project-directory & atom .
4
JSON C11

Windowsで実行している場合は、次のコマンドを使用できます。

ドライブ:

cd "Script location"
schtasks /run /tn "TASK1"
schtasks /run /tn "TASK2"
schtasks /run /tn "TASK3"
exit
1
Pulendar Vadde

あなたの質問に対する直接的な答えはわかりませんが、これらのスクリプトをたくさん行うなら、Perlのようなより強力な言語を学ぶ価値があるかもしれません。 Windows用の無料の実装があります(例:activestate、cygwin)。私自身のタスクのために最初の努力をする価値があると感じました。

編集:

@Ferruccioが示唆するように、追加のソフトウェアをインストールできない場合は、vbscriptまたはjavascriptを検討してください。これらは、Windowsスクリプトホストに組み込まれています。

1
Mr Fooz

バッチファイルにセミコロンは必要ないことに注意してください。また、呼び出しを使用する必要がある理由は、mvn自体がバッチファイルであり、バッチファイルがcallを使用して相互に呼び出す必要があるためです。そうでない場合、制御は呼び出し元に戻りません。

0
Pushkar