2017-04-15 8 views
-1

cmdコンソールでコマンドを正常に実行するには、各引数の間に一時停止する必要があります。あなたはちょうど終了するCMDプロセスを待つ必要が引数をcmdに渡してwpfアプリケーションで実行を一時停止する方法

System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo(); 
    proc.FileName = @"C:\windows\system32\cmd.exe"; 
    proc.Arguments = "/c net start defragsvc"; 

    proc.Arguments = "/c diskpart"; 

    proc.Arguments = "/c sel vol 1"; 

    proc.Arguments = "/c shrink desired =" + shrinksize + ""; 

    proc.Arguments = "/c exit"; 

    proc.Arguments = "/c exit"; 
    proc.Arguments = "/c net stop defragsvc"; 

    System.Diagnostics.Process.Start(proc); 
+0

UIスレッドをブロックすることなくこれを行う1つの方法については、最初に重複したマークを参照してください。下の1つの答えで提案された、より基本的な、GUI非友好的なアプローチについては、2番目に重複したものを参照してください。 –

答えて

-1

は、ここに私のコードです。

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    int ExecuteWithCmd(string command) 
    { 
     ProcessStartInfo proc = new ProcessStartInfo(); 

     proc.FileName = @"C:\windows\system32\cmd.exe"; 
     proc.Arguments = string.Format("/c {0}", command); 

     Process newCmdProcess = Process.Start(proc); 
     newCmdProcess.WaitForExit(); 

     return newCmdProcess.ExitCode; 
    } 

    private void btnAction_Click(object sender, RoutedEventArgs e) 
    { 
     string shrinksize = "some value?"; 

     this.ExecuteWithCmd("net start defragsvc"); 
     this.ExecuteWithCmd("diskpart"); 
     this.ExecuteWithCmd("sel vol 1"); 
     this.ExecuteWithCmd("shrink desired =" + shrinksize); 
     this.ExecuteWithCmd("exit"); 
     this.ExecuteWithCmd("exit"); 
     this.ExecuteWithCmd("net stop defragsvc"); 

    } 
} 

戻り値を使用して、コマンドが正しく実行されたかどうかを判断することもできます。

+0

返信いただきありがとうございます。 – hustlecoder

+0

コードは最初のコマンドを正しく実行しますが、別のウィンドウでdiskpartを開き、停止します。 – hustlecoder

+0

diskpartウィンドウが表示され、停止します。私がそれを閉じると....他のコマンドはエラーで実行され、アプリケーションは終了します。 – hustlecoder

関連する問題