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上运行。
我做错了什么?
答案 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'
,并且还将在前面放置一个&
,以将字符串视为应执行的操作。像往常一样继续完成您的路径。