それを行うcmdスクリプトおよび/またはジョブの準備が整ったコマンドラインツールがあるかどうかは誰でも知っていますか?
それを行うcmdスクリプトおよび/またはジョブの準備が整ったコマンドラインツールがあるかどうかは誰でも知っていますか?
回答:
以下の3つのバッチファイルを作成します。Main.batは1.batと2.batを起動します
1.batおよび2.batは、main.batがチェックする一時ファイルを書き出します。1.batおよび2.batが動作している間、main.batは処理がまだ実行中であることを報告します。1.batまたは2.batの開いているウィンドウでEnterキーを押すと、一時ファイルが削除され、プログラムが終了します。これは、その.batファイルの処理停止をシミュレートします。1と2.batの両方でこれを行うと、main.batは、これらのプロセスの処理が完了したことを報告します。終了時に一時ファイルをクリアする限り、1.batおよび2.batで必要な処理を実行できます。この時点で、main.batはあなたがやりたいことなら何でもできます。
1.bat
echo %time% > 1.tmp
pause
del 1.tmp
exit
2.bat
echo %time% > 2.tmp
pause
del 2.tmp
exit
main.bat
@echo off
start "1" 1.bat
start "2" 2.bat
@ping -n 1 127.0.0.1 > nul
:loop
@echo Processing......
if not exist *.tmp goto :next
@ping -n 5 127.0.0.1 > nul
goto loop
:next
@echo Done Processing!
プロセスが標準入力または出力を必要としない限り、十分に単純です。コマンドラインから、またはバッチファイルで:
process1 | process2 | process3 | process4
これにより、4つのプロセスすべてが同時に実行され、すべて終了するまで戻りません。(考えられる例外:プロセスが明示的に標準出力を閉じた場合、あたかも終了したかのように扱われるかもしれません。しかし、それは珍しいことで、それを行うプロセスはほとんどありません。)
この方法で同時に起動できるプロセスの数は正確にはわかりません。私は10個まで試しました。
Powershell Start-Jobコマンドレットをご覧ください。これができるはずです。もっとここに PowerShellは、選択したMicrosoftのシェルです。それはcmdスクリプトよりもはるかに強力であり、あなたの時間の投資に値する
私も同様の仕事を探していました。目的は、複数のコマンドを並列に実行し、すべての並列プロセスの出力(標準出力とエラー)を抽出することでした。次に、すべての並列プロセスが終了するのを待って、別のコマンドを実行します。以下は、CMDで実行できるBATファイルのサンプルコードです。
(
start "" /B cmd /c ping localhost -n 6 ^>nul
timeout /t 5 /nobreak
start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1
start "" /B cmd /c ping localhost -n 11 ^>nul
timeout /t 10 /nobreak
) | pause
Echo waited
timeout /t 12 /nobreak
内部のすべてのステートメント()
が最初に実行され、それらが完了するまで待機してから、最後の2行が実行されます。で始まるすべてのコマンドstart
が同時に実行されます。
これらのリンクは役立ちます:https : //stackoverflow.com/a/43762349/9689416およびhttps://ss64.com/nt/start.html