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

问题描述 投票:0回答:3
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 上运行。

我做错了什么?

windows cmd space
3个回答
10
投票

简短回答:使用

& 'C:\path with spaces\app.exe'

说明: 只需在 powershell 中输入您的路径,并在选择任何包含空格的目录时使用

TAB
自动完成。 Powershell 会自动插入 单引号
'bla bla'
,并且还会在前面放置一个
&
,这是将字符串视为应该执行的内容所必需的。像往常一样继续完成你的道路。


5
投票

做到这一点的方法 - 我不敢相信我现在才弄清楚 - 是使用为非 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
投票

您一定做错了什么,因为双引号封装了可执行文件的路径,包括空格。

为了确保您正确执行此操作,请开始输入命令的路径,并在

TAB
之后使用
F:\Program
,直到看到正确的路径,在您的情况下,它会自动执行此操作

"F:\Program Files"

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

"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\R\R-3.4.0beta\bin\R.exe"

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

R.exe
© www.soinside.com 2019 - 2024. All rights reserved.