2011-07-03 18 views
7

プロセスに名前にスペースを含む引数を渡そうとしています。フォルダを認識しません。どうやってやるの?C# - それらの間にスペースを含む引数をプロセスに渡します。

string my_arg = @"C:\\program files\\my folder with spaces"; 

ProcessStartInfo proc = new ProcessStartInfo(); 

proc.FileName = @"C:\batches\my_batch.bat"; 

proc.Arguments = @my_arg ; 

Process.Start(proc); 

プロセスは起動しません。名前にスペースが含まれていないフォルダを使用すると機能します。 ありがとうございました!

+0

my_arg = "\" "+ my_arg +" \ "";のように、my_argを余分な引用符でエンコードしてみてください。それは働くだろうか? – Gleno

答えて

1

は、スペースでfoldernamesはCMDで引用されなければならないとして、次のことをやってみてください。

string my_arg = @"""C:\\program files\\my folder with spaces"""; 
+1

まだ動作しませんか? – pall

6

あなたはリテラル文字列を使用しています。バックスラッシュをエスケープする必要はありません。実際には、最初にリテラル文字列を使用する必要はありません。

一方、スペースには特別な注意が必要です。引数を引用符で囲んでこれを解決します。

string my_arg = @"""C:\program files\my folder with spaces"""; 
+1

終了引用符を忘れてしまった。 – Guffa

2

これを試してみてください。

string my_arg = "\"C:\\program files\\my folder with spaces\""; 
0

この

文字列my_arg = @ "\" C試してみてください:\プログラムファイルは、\、スペースと私のフォルダを\ | ";

ProcessStartInfoをproc = new ProcessStartInfo();

proc.FileName = @ "C:\ batches \ my_batch.bat";

proc.Arguments = @my_arg;

Process.Start(proc);

関連する問題