.cmd には次の行があります
Start ROBOCOY src dest a* b* c* /z /w:1 r:1
Start ROBOCOY src dest d* e* f* g* /z /w:1 r:1
Start ROBOCOY src dest h* K* P* Y* /z /w:1 r:1
Start ROBOCOY src dest xry* srp* /z /w:1 r:1
> Robocopy sample.cmd を実行すると、上記のコマンドに従ってファイルを同時にコピーする 4 つの複数のウィンドウから開始します。ファイルが別のプロセスで使用されている場合、待機時間があるため、別のファイルを待ちます。同時に仕事をするので、より高速です。
現在、コマンドコンソールに移動して開始する代わりに、C#ウィンドウを使用してプロセスを実行するGUIを開発しています
main()
{
process.start( "path of sample.cmd" )
process.waitforexit()
label.text=" sucessful copy"
}
ただし、1 つのプロセス、つまり cmd.exe を制御し、タスクマネージャーに 4 つの robocopy プロセスがある場合。cmd.exe プロセスが完了すると、カーソルが label.text "正常に完了しました" に戻ります。まだ実行中の robocopy プロセスがあります。コピー プロセスを実行している robocopy ウィンドウを確認できます。
ここに質問があります: すべてのプロセス (cmd.exe および robocopy.exe) を C# でプログラムによって制御したいので、すべてのコマンドが正常に完了した場合にのみ、label.text が「正常に完了しました」と表示されるようにします。 1 つが失敗すると、GUI には意味がありません。
オプション 2 (上で Biju が書いたものと同様): sample.cmd(バッチ ファイル) ファイルから robocopy コマンド スクリプトを削除し、C# で 4 つの robocopy 行を実行するコードを記述した方がよいのですが、robocooy スクリプト行を実行する方法が書かれています。 cmd ファイルにも引数があるためです。コードは各 robocopy プロセスを実行し、それぞれが次のコード行に戻ります。失敗した場合は、エラーをキャッチしてメッセージ ボックスに表示できます。
これが役立つことを願っています...ただし、誰かが同じことを改善できる場合は、より良い方法を探しています。