2017-08-28 7 views
0

C#アプリケーションでnupkgの作成を自動化しようとしています。私は自分のプロジェクトにnuget.exeを組み込み、System.Diagnosticsを使ってcmd.exeをプロセスとして起動し、 'cd project \ path \ here'、 'nuget spec something.dll'といった必要なコマンドを渡すことを目指しています'と' nuget pack something.nuspec 'があります。C#のコンソールアプリケーションから複数のcmdコマンドを実行する方法

 Process p = new Process(); 
     ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\System32\cmd.exe", @"mkdir testdir"); 

     p.StartInfo = info; 
     p.Start(); 

     Console.ReadLine(); 

しかし、それもTESTDIRを作成していない、と私はどのようにチェーンこれらのコマンドは考えを持っていないしました:

私がこれまで持っているコードです。私のプロセスにはWaitForInputIdleというメソッドがありますが、イベントを発生させてしまい、それらを正直に扱う方法がわかりません。

完璧な解決策は、出力と入力を読み取ることもできます。私はStreamWriter p.StandardInputを使ってみましたが、コマンドが完了したかどうか、結果は何かを確認するという問題があります。

ご協力いただければ幸いです。

編集:成功!私は、ディレクトリを作成するために管理してきました:) ここに私のコードは今です:

Process p = new Process(); 
    ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\System32\cmd.exe"); 
    info.RedirectStandardInput = true; 
    info.UseShellExecute = false; 

     p.StartInfo = info; 
     p.Start(); 

     using (StreamWriter sw = p.StandardInput) 
     { 
      sw.WriteLine("mkdir lulz"); 
     } 

それでも入力を待つと、しかし、より多くのコマンドをフォローアップする方法がないアイデア。

+0

'Directory.CreateDirectory'参照または作成bat-fileを実行して実行します。 – Sinatr

+0

Sinatr私は、単にcmdを動作させようとしていた、ディレクトリを作成するつもりはありません。 – Nech

+0

あなた自身の質問に答えることができたので、解答を編集として投稿していないのであれば答えとして、それは良いでしょう。 –

答えて

0

次の3つの方法

1 - 最も簡単なオプションは、「&」記号で2つのコマンドを組み合わせることであることによってこれを行うことができます。

2 ProcessStartInfoでプロセスの作業ディレクトリを設定します。

var processInfo = new ProcessStartInfo("cmd.exe", @"your commands here "); 
processInfo.UseShellExecute = false; 
processInfo.WorkingDirectory = path; 

3-プロセスの入出力をリダイレクトします。あなたがプロセスに複数の入力を送りたいとき.Thisが必要です(またProcessStartInfoを介して行う)、またはあなたがプロセス

の出力を取得したい場合にもthis answer

関連する問題