处理cmd路径中的空格

时间:2013-04-03 06:23:50

标签: c# .net

所以我正在构建一个运行cmd.exe的命令。但由于某些目录名称中的空格,命令似乎失败了。

process.StandardInput.WriteLine(this.phpPath + " " + this.phpUnitPath + " " + itemChecked);

4 个答案:

答案 0 :(得分:2)

只需将路径放在双引号之间:

string command = "\"" + someFilePathWithSpaces + "\"";

答案 1 :(得分:1)

在命令行中使用空格传递文本的典型方法是将其包装在引号中,如下所示:

app "c:\my apps\blah.exe" "some argument"

尝试做这样的事情:

string path = this.phpPath + " " + this.phpUnitPath + " " + itemChecked
string cmd = string.Format("\""{0} {1} {2}"\"", 
    this.phpPath, this.phpUnitPath, itemChecked);

答案 2 :(得分:0)

你说你正在使用cmd.exe,但是你要将数据写入Process的标准输入。我假设process是您已启动的cmd.exe个实例。

可能更好的方法是使用/C开关:

C:\Users\Jonathon>cmd /?
Starts a new instance of the Windows command interpreter

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OF
    [[/S] [/C | /K] string]

/C      Carries out the command specified by string and then terminates
...

无论你走到哪里,所有带空格的路径都需要用引号括起来。

最后请注意,您确定甚至需要使用cmd.exe吗?为什么不直接执行您想要直接运行的程序?

答案 3 :(得分:0)

在以下语句中放置第一个数组中的任意数量的部分路径:

var path=String.Join((new[] { this.phpPath, this.phpUnitPath, itemChecked }).Aggregate((a, b) => a+"\x20"+b), new[] { '\"', '\"' });