WindowsのCMDコンソールで2つのコマンドを実行したい。
Linuxでは次のようにします。
touch thisfile ; ls -lstrh
Windowsではどうやるの?
2000年以降のすべてのMicrosoft OSでこのようになっており、現在も良好です。
dir & echo foo
最初のコマンドが正常に終了した場合にのみ、2番目のコマンドを実行させたい場合。
dir && echo foo
1行で複数のコマンドを実行するためのアンパサンド(&)構文は、Windows XP、Windows 2000、およびいくつかの初期のNTバージョンにまでさかのぼります。(ここのあるコメントによると、少なくとも4.0)。
この点については、このページをスクロールしていくと、他にもかなりのポイントがあります。
勉強になると思われる方のために、過去のデータを紹介します。
それ以前は、&&構文は、Microsoftのコマンドインタプリタにその機能が追加される前の、シェル代替の4DOSの機能でしかありませんでした。
Windows 95、98、MEでは、代わりにパイプ文字を使うことになる。
dir | echo foo
MS-DOS 5.0以降、WindowsやNTの初期バージョンのコマンドインタプリタでは、(文書化されていない)コマンドセパレータは文字20(Ctrl+T)でしたが、ここでは^Tと表現します。
dir ^T echo foo
ドキュメントからの引用です。
複数のコマンドと条件付き処理シンボルの使用について
条件付き処理シンボルを使って、1つのコマンドラインやスクリプトから複数のコマンドを実行することができます。条件付き処理シンボルを使って複数のコマンドを実行すると、条件付き処理シンボルの右側のコマンドは、条件付き処理シンボルの左側のコマンドの結果に基づいて動作します。
例えば、前のコマンドが失敗した場合にのみ、あるコマンドを実行したい場合があります。あるいは,前のコマンドが成功した場合にのみ,コマンドを実行したい場合もあるでしょう。
次の表に示す特殊文字を使って、複数のコマンドを渡すことができます。
& [...]
コマンド1 & コマンド2
1つのコマンドラインで複数のコマンドを区切るために使用します。Cmd.exeは最初のコマンドを実行し、次に2番目のコマンドを実行します。
&& [...]
コマンド1 & & コマンド2` シンボルの前のコマンドが成功した場合にのみ、&&に続くコマンドを実行するために使用します。Cmd.exeは、最初のコマンドを実行し、最初のコマンドが正常に完了した場合にのみ、2番目のコマンドを実行します。
|| [...]
コマンド1 || コマンド2` 直前のコマンドが失敗した場合にのみ、||に続くコマンドを実行するために使用します。Cmd.exeは、最初のコマンドを実行し、最初のコマンドが正常に完了しなかった(0より大きいエラーコードを受け取った)場合にのみ、2番目のコマンドを実行します。
( ) [...]
(コマンド1 & コマンド2)
複数のコマンドをグループ化またはネスト化するために使用します。
; または ,
コマンド1 パラメータ1;パラメータ2 ` コマンドのパラメータを分離するのに使います。