处理cmd路径中的空格

本文关键字:空格 路径 cmd 处理 | 更新日期: 2023-09-27 18:07:05

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

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

处理cmd路径中的空格

将路径放在双引号之间:

string command = "'"" + someFilePathWithSpaces + "'"";

在命令行中传递带有空格的文本的典型方法是将其用引号括起来,如下所示:

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);

您说您正在使用cmd.exe,但您正在将数据写入Process的stdin。我假设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吗?为什么不直接执行你想要运行的程序呢?

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

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