Windowsコマンドラインで1行で複数のコマンドを実行する?
svn update; copy *.* c:\development\copy\
明らかにうまくいきません。このようなことを実行するために ‘;’ のような文字や区切り文字はありますか?
svn update; copy *.* c:\development\copy\
明らかにうまくいきません。このようなことを実行するために ‘;’ のような文字や区切り文字はありますか?
start
でコマンドを開始しているところを1行で複数のコマンドを実行したい場合、例えばこんな感じのコマンドを実行したいとします。
start "" netsh dump && pause
次に、2つのステップで実行する必要があります(1行の解答はこの解答の最後にあります)。
echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
-or-
echo netsh dump ^& pause ^& exit>foobar.cmd
start "" foobar.cmd
-or-
start "" "temporary foobar.cmd"
&
(アンパサンド)のそれぞれを&&
で「エスケープ」する必要があることに注意してください。
次に、"&"s
を使ってバッチファイルを起動します。
start "" /w foobar.cmd
注意:ダブルクォートマークの空のペアは、
"^"
が開くコマンドウィンドウのタイトルバーに表示されるecho
のためのものです。このstart
の引数は、技術的には"Title"
のoptional引数ですが、start
が実行するコマンドがダブルクォートされている場合はrequiredとなります。例えば、2 番目の例では、
"Title"
このように空のダブルクォーテーションマークのペアを省略すると、
となります。
start
とすると、
start
は新しいコマンドウィンドウを開き、start "" "temporary foobar.cmd"
を新しいコマンドウィンドウstart "temporary foobar.cmd"
として使用し、nothingは新しいコマンドウィンドウで実行されます)。
start
が完了する前に("temporary foobar.cmd"
が却下された後に)バッチファイルの完了を待つようにしたい場合は、"Title"
のコマンドにstart
のスイッチを追加する必要があります。
echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
-or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd
これを一行にまとめて、一時バッチファイル(pause
)を削除(削除)することもできます:
0x1&
注意: 一時バッチファイルを削除する場合、start
を/w
スイッチを付けて実行する必要があります。
少なくともMS-DOS 6.22では、私はCtrl+Tキーを使って段落記号のようなものを取得していました。これはPhoshiさんが言及されている「&」と同じように動作しました。ただし、これは doskey.exe が起動している場合にのみ有効です。
はい &
を使用してください!
%command1% & %command2%
両方のコマンドを実行
%command1% && %command2%
最初のコマンドを実行
%command1% || %command2%
最初のコマンドを実行
0x6& 最初のコマンドを実行
0x6& 失敗した場合は秒のコマンドを実行
[ ここ ]を参照 (http://www.instructables.com/id/Conditional-Execution-in-Batch/#step2)