2016-12-22 1 views
4

私は似たような例を見ましたが、私の問題とまったく同じものを見つけることはできません。C#Process.Startを使用してパス内にパラメータとスペースを入れてください

私はC#から、このようなコマンドを実行する必要があります。

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "cmd"; 
startInfo.Arguments = "/K D:\\as df\\solver\\Swag.Console.exe -f D:\\as df\\solver\\2035.swag -p 5555"; 
Process.Start(startInfo); 

は動作しません。

startInfo.Arguments = "/K \"D:\\as df\\solver\\Swag.Console.exe\" -f D:\\as df\\solver\\2035.swag -p 5555"; 

は機能しません。

startInfo.Arguments = "/K \"D:\\as df\\solver\\Swag.Console.exe\" -f \"D:\\as df\\solver\\2035.swag\" -p 5555"; 

は機能しません。

startInfo.FileName = "\"D:\\as df\\solver\\Swag.Console.exe\""; 
startInfo.Arguments = " -f \"D:\\as df\\solver\\2035.swag\" -p 5555"; 

だから私はCMDしたい、これは可能ですか?

enter image description here

+0

私がする必要がありますCMDウィンドウはアプリケーションの終了後に閉じられませんでした –

+0

'var proc = Process.Start(startInfo); proc.WaitForExit(); ' – Sameer

+0

_italic_ **太字**' proc.WaitForExit(); ' –

答えて

3

/K引数は、それを次のコマンドを実行します。 &と連鎖しているコマンドはたくさんあるかもしれませんが、これはあなたの試行に欠けていたものです。その場合は二重引用符で完全に囲む必要があります。言い換えればthe SS64 cmd reference

を参照してください、コマンドは次のようになります。

ので、すぐにトラックを失う前進とバックスラッシュの
cmd /K " here what ever you want to execute" 

。だから、私はString.Formatをラップする外側の二重引用符を取り出したので、あなたの実際のコマンドがどんなものであるべきかをもう少し明確にします。ここで私は動作するはず期待するコードは次のとおりです。

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "cmd"; 
startInfo.Arguments = String.Format(
    "/K \"{0}\"", 
    " \"D:\\as df\\solver\\Swag.Console.exe\" -f \"D:\\as df\\solver\\2035.swag\" -p 5555"); 
Process.Start(startInfo); 

Swag.Console.Exeは、単にコンソールにその引数をダンプ希望の場合、これは結果のようになります。

-f 
D:\as df\solver\2035.swag 
-p 
5555 
+0

クール、それは動作します! –

関連する問題