parallel Windows CMD で 1 行に 2 つのコマンドを実行するにはどうすればよいですか。




cmd parallel (13)

私はWindows CMDコンソールで2つのコマンドを実行したい。

Linuxでは、私はこれを好きです

touch thisfile ; ls -lstrh

それはWindows上でどのように行われますか?


&はBashと同等です; (実行コマンド)と&&はBashの&& (前のコマンドでエラーが発生していない場合にのみコマンドを実行)です。


もう1つの例:たとえば、 gulpビルドシステムを使用する場合、

gulp - デフォルト>ビルド

gulp build - ビルドフォルダをビルドする

gulp watch - ファイルgulp watch開始

gulp dist - ビルドdist-folder

私たちはそれを1行で行うことができます:

cd c:\xampp\htdocs\project & gulp & gulp watch

私は同じウィンドウに2つのpingを持っているようにしようとしています。これは同じ行のシリアルコマンドです。 最初のコマンドが終了したら、2番目のコマンドを実行します。

解決策は、Windows 7のコマンドプロンプトでstart /bと組み合わせることでした。

/bずに通常どおり起動し、別のウィンドウで起動します。

同じ行で起動するコマンドは次のとおりです。

start /b command1 parameters & command2 parameters

いずれにしても、出力を解析する場合は、これを使用することはお勧めしません。 私は出力がコマンドの出力の間にスクランブルされていることに気づいた。


まあ、あなたは2つのオプションがあります:配管、または単に&

DIR /S & START FILE.TXT

または、

tasklist | find "notepad.exe"

パイプ( | )は、1つのコマンドの出力を別のコマンドに出力するためのものです。 そして、( & )はこれを実行するということだけです。


cmdのショートカット(デスクトップ上など)を作成する場合は、/ kパラメータを追加します(/ kは保持を、/ cはウィンドウを閉じる)。

cmd /k echo hello && cd c:\ && cd Windows

単純です: &&記号で区別するだけです。 例:

echo Hello World && echo GoodBye World

さよならワールドは、Hello Worldの後に印刷されます。


あまりにも早く評価されている環境変数の問題を解決するためにcallを使うことができます。

set A=Hello & call echo %A%

1行で変数を使用または操作しようとすると、その内容に注意してください! たとえば、次のような変数

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

あなたが%PATH%としてそれを使用すれば、手に取られないトラブルがたくさん発生します。

  1. 閉じ括弧はグループ文を終了します。
  2. 二重引用符では、 %PATH%を使用してかっこの問題を処理することはできません
  3. そして、 %USERPROFILE%ような参照変数にはどのようなものが含まれますか?

cmd /c ipconfig /all & Output.txt

このコマンドは、コマンドを実行し、単一のコマンドでOutput.txtファイルを開きます


だから、コンテキストメニューからRegAsm (レジスタアセンブリ)を実行する特定のタスクを有効にしようとしていRegAsm 。 私が持っていた問題は、それを読むことができるようになる前に、結果が飛び散って消えてしまうことでした。 そこで私はPauseにパイプを試みましたが、これはコマンドが失敗したときには動作しませんでした(ここで言及したように、.batスクリプトで動作しない一時停止コマンドとここではバッチファイルコマンドPAUSEは機能しません )。 だから私はcmd /kを試しましたが、それはより多くのコマンドのためにウィンドウを開いたままにしています(私は結果を読みたいだけです)。 そこで、 pauseを追加してチェーンをexitさせ、以下の結果を得ました:

cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit

これは魔法のように機能します - RegAsmはファイル上で実行され、その結果を表示し、次に "Press any key to continue ..."プロンプトが表示され、キーを押すとコマンドプロンプトウィンドウが閉じます。

PS興味のある他の人には、以下の.regファイルエントリを使用して.dllファイルにdllfileの関連付けを追加し、それにRegAsmコマンドの拡張子を付けることができます(エスケープされた引用符とバックスラッシュに注意してください)。

[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"

[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"

今すぐ右クリックメニューがあり、アセンブリを登録できます。


同じ行でいくつかのコマンドを実行するときにいくつかの処理シンボルを使用することができ、場合によってはリダイレクション処理につながり、他の場合には出力を変更したり、失敗したりすることがあります。 1つの重要なケースは、変数を操作する同じ行コマンドに置くことです。

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

上記の例のように、変数を使用するコマンドが同じ行に配置されている場合は、遅延拡張を使用して変数値を更新する必要があります。 変数が索引付けされている場合は、%%修飾子を指定したCALLコマンドを使用して、同じ行の値を更新します。

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5

同時に2つのコマンドを実行するには、2つのコマンドの間に&(アンパサンド)記号を挿入する必要があります。 そのようです:

color 0a & start chrome.exe

乾杯!


&を使って次々にコマンドを実行できます。 例: c:\dir & vim myFile.txt





cmd