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();
我需要 运行 批处理文件,其中包含路径(可以包含空格)作为参数。
批处理文件非常简单:
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();