0

単純な問題がありますが、これを処理する方法がわかりません。つまり、フォルダー内のすべてのファイルを削除する単純なバッチ ファイルがあります (たとえば)。どこでも実行できるが、C# によるアプリケーションで実行したい。プロジェクトフォルダにスペースが含まれていない場合(「例:C:\Project Test\test.bat」はエラーになりますが、「C:\ProjectTest\test.bat」は実行されます)、すべて問題ありません。

以下は、実行するソース コードです (繰り返しますが、プロジェクト フォルダーのフォルダー名にスペースが含まれている場合にのみエラーになります)。プロジェクト フォルダーにスペースがない場合にファイル バッチを実行してもエラーにならない。

        Process myProcess = new Process();
        myProcess.StartInfo.FileName = "cmd.exe";
        myProcess.StartInfo.Arguments = "D:\\prepare.bat";
        myProcess.StartInfo.WorkingDirectory = "D:\\";
        myProcess.StartInfo.UseShellExecute = false;
        myProcess.StartInfo.RedirectStandardOutput = true;

        //myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        myProcess.Start();
        StreamReader myStreamReader = myProcess.StandardOutput;
        string myString = myStreamReader.ReadLine();
        MessageBox.Show(myProcess.StartInfo.Arguments + " " + myString);
        myProcess.WaitForExit();

ありがとうございます。

4

3 に答える 3

1

"C:\Project Test\test.bat"使用する代わりに"\"C:\Project Test\test.bat\""

于 2013-03-05T10:44:13.603 に答える
1

スクリプト パスを引用符で囲んでみてください。

myProcess.StartInfo.Arguments = "\"D:\\Project Test\\prepare.bat\"";
于 2013-03-05T10:42:14.093 に答える
1

次のように引数を引用符で囲みます。

myProcess.StartInfo.Arguments = "\"C:\\Project Test\\test.bat\"" 

また

myProcess.StartInfo.Arguments = @"\"C:\Project Test\test.bat\""

cmd に渡す場合、引数は引用符で囲む必要があります。

于 2013-03-05T10:43:18.307 に答える