我想运行简单的CMD
命令,而我的argument
包含空格("")。
在这种情况下,由于它被识别为具有多个arguments
...
这是我尝试过的(相同的结果):
string arg = "c:\my path\ this is test\file.doc";
string.Format("\"{0}\"", arg)
编辑:
public void Invoke(string fileName, string arg)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
processStartInfo.FileName = fileName;
if (arg != "")
processStartInfo.Arguments = arg;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.RedirectStandardError = true;
processStartInfo.RedirectStandardInput = true;
processStartInfo.UseShellExecute = false;
processStartInfo.CreateNoWindow = true;
Process process = new Process();
process.StartInfo = processStartInfo;
process.Exited += Process_Exited;
process.EnableRaisingEvents = true;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
}
用法:
string arg = "c:\my path\this is my string.ps1";
Invoke(@"C:\windows\system32\windowspowershell\v1.0\powershell.exe", string.Format("\"{0}\"", arg));
答案 0 :(得分:0)
在您的应用程序中,将所有参数连接在一起以获得单个空格分隔的参数,如下所示:
var joinedArgs = string.Join(" ", args);
然后将连接的args传递给你的函数。
答案 1 :(得分:0)
你可以试试这个:
string arg = @"c:\\"my path\"\\"this is my string.ps1\"";
Invoke(@"C:\windows\system32\windowspowershell\v1.0\powershell.exe",
string.Format("\"{0}\"", arg));
或 string arg = @" c:/ \"我的路径\" / \"这是我的string.ps1 \"&#34 ;;