C# 运行 带空格参数的批处理文件

C# run batch file with argument with spaces

我需要 运行 批处理文件,其中包含路径(可以包含空格)作为参数。

批处理文件非常简单:

echo off

echo %1 > echotest.txt

我正在使用 运行 这个批处理文件的 Csharp 代码:

   ProcessStartInfo info = new ProcessStartInfo();
                        info.UserName = KIM_USER;
                        info.Password = ConvertToSecureString(KIM_USER_PASSWORD);
                        info.FileName = theTask.Path;
                        info.Arguments = "\"" + TranslateParameter(theTask.Parameter) + "\"";
                        info.Domain = Environment.MachineName;
                        info.WorkingDirectory = Path.GetDirectoryName(theTask.Path);
                        info.UseShellExecute = false;
                        info.CreateNoWindow = true;
                        Process batProcess = Process.Start(info);
                        batProcess.WaitForExit();

基本上in parameter comes e.g {Test_Path} 这是在TranslateParameter中转换为真实路径,e.g: D:\Test Path\ (contains spaces)

这对我不起作用,它 returns 我每次都退出代码 1。

如果我从 info.Arguments 中删除 \",它会起作用,但在输出文件中只是 D:\Test

有什么建议吗?

此致

如果可行,你能试试这个吗:

ProcessStartInfo info = new ProcessStartInfo();
info.UserName = KIM_USER;
info.Password = ConvertToSecureString(KIM_USER_PASSWORD);
info.FileName = theTask.Path + " \"" + TranslateParameter(theTask.Parameter) + "\"";
//info.Arguments = "\"" + TranslateParameter(theTask.Parameter) + "\"";
info.Domain = Environment.MachineName;
info.WorkingDirectory = Path.GetDirectoryName(theTask.Path);
info.UseShellExecute = false;
info.CreateNoWindow = true;
Process batProcess = Process.Start(info);
batProcess.WaitForExit();