如何在Windows 10上从命令行运行包含路径空间的可执行文件?

时间:2017-04-20 04:49:05

标签: windows cmd space

H:\>"H:\Program Files\R\R-3.4.0beta\bin\R.exe"
'H:\Program' is not recognized as an internal or external command,
operable program or batch file.

H:\>"H:\Progra~1\R\R-3.4.0beta\bin\R.exe"
The system cannot find the path specified.

H:\>H:\Progra~1\R\R-3.4.0beta\bin\R.exe
The system cannot find the path specified.

我尝试使用" ... "Progra~1,但两者都无法在Windows 10上运行。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

你必须做错事,因为双引号封装了包含空格的可执行文件的路径。

为了确保您正确地执行此操作,请开始键入命令的路径,并在TAB之后使用F:\Program,直到您看到正确的路径,在您的情况下,它将自动执行此操作

"F:\Program Files"

使用箭头键返回结束引号后面继续路径并使用标签直至到达。

"H:\Program Files\R\R-3.4.0beta\bin\R.exe"

您也可以尝试使用Start

进行发布
start "H:\Program Files\R\R-3.4.0beta\bin\R.exe"

如果您的cmd窗口在实际的系统驱动器上打开,其中" Program Files"如果找到了,你可以运行它而不是添加驱动器号:

".\Program Files\R\R-3.4.0beta\bin\R.exe"

或者使用路径将其添加到环境变量中,然后它应该只用:

执行
R.exe

答案 1 :(得分:1)

做到这一点的方法 - 我简直不敢相信我现在才弄清楚 - 是使用为非 8dot3 名称的文件生成的 Windows 短名称。要获取相关路径或程序名称,请键入 dir /x <path to program>。它会为 PROGRA~1 文件夹吐出类似 Program Files 的内容。当然,你必须逐个目录来做那个目录,如果你有多个文件/文件夹,名称中有空格,那就麻烦了。如果你想用短名称格式化完整路径,你可以这样做:

for %I in (*) do echo %~sI 

例如,如果我要访问的文件是 C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\License Terms\License_msodbcsql_ENU.txt,我可以输入:

for %I in ("C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\License Terms\License_msodbcsql_ENU.txt") do echo %~sI

我得到的是更容易的C:\PROGRA~1\MICROS~2\CLIENT~1\ODBC\170\LICENS~1\LICENS~1.TXT

烦人的是,如果不使用循环就无法查询整个目录路径,但事实就是如此。适合别名。

powershell 可能有更简单的方法,但我很确定 cmd 提示符没有。

答案 2 :(得分:0)

简短答案:使用& 'C:\path with spaces\app.exe'

说明:只需在Powershell中输入路径,然后在选择任何包含空格的目录时使用TAB自动完成。 Powershell将自动插入单引号 'bla bla',并且还将在前面放置一个&,以将字符串视为应执行的操作。像往常一样继续完成您的路径。