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 上运行。
我做错了什么?
简短回答:使用
& 'C:\path with spaces\app.exe'
说明: 只需在 powershell 中输入您的路径,并在选择任何包含空格的目录时使用
TAB
自动完成。 Powershell 会自动插入 单引号 'bla bla'
,并且还会在前面放置一个 &
,这是将字符串视为应该执行的内容所必需的。像往常一样继续完成你的道路。
做到这一点的方法 - 我不敢相信我现在才弄清楚 - 是使用为非 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 提示符下没有。
您一定做错了什么,因为双引号封装了可执行文件的路径,包括空格。
为了确保您正确执行此操作,请开始输入命令的路径,并在
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