如何用空格传递CMD参数?

时间:2016-12-16 16:12:12

标签: c# cmd arguments

我想运行简单的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)); 

2 个答案:

答案 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 ;;