- 締切済み
実行コマンドのプロセス管理
バックアップをCドライブからEドライブにとるために ROBOCOPY C:\ E:\ /e /xo とバッチプログラムを組んでおりがVB2005で作成したForm上のボタンをクリックするとバッチプログラムが実行されるようになっています。 その時にForm上に進行具合を表示させたいです。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click System.Diagnostics.Process.Start("ROBOCOPY C:\ E:\ /e /xo") End Sub labelを配置してコピー中は「バックアップ中です」、コピー終了後には「完了しました」と表示させたいです。 違う方法でも構わないのですが、とりあえず作業中、完了わかればいいです。 どなたかご教授願います。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- neko_noko
- ベストアンサー率45% (146/319)
Processクラスのインスタンスを使用し、WaitForExit()メソッドを使用します。 Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start("ROBOCOPY C:\ E:\ /e /xo") 'バッチプログラムのプロセスをpとしておく p.WaitForExit() 'バッチ処理が終わるまで待機 '終了後の処理を書く ただ、この場合は画面が応答なし状態になるみたいです。
- unamana19
- ベストアンサー率62% (56/89)
System.ComponentModel.BackGroundWorker を使ってみるとか。
- sugao_chib
- ベストアンサー率59% (22/37)
Label1.Text = "バックアップ中です" System.Diagnostics.Process.Start("ROBOCOPY C:\ E:\ /e /xo") Label1.Text = "完了しました" でいいのかな?
補足
>System.Diagnostics.Process.Start("ROBOCOPY C:\ E:\ /e /xo")> >.Label1.Text = "完了しました" これですとバッチプログラムの完了後に完了しましたとはでないですよね?