用户名或路径含空格时如何通过CMD/PowerShell运行exe文件?
问题原因
命令行环境默认以空格作为参数分隔符,你给出的路径中包含空格,系统会把空格前的部分当做独立的文件路径解析,自然找不到对应文件。
解决方案
CMD环境
start命令存在特殊规则:第一个被双引号包裹的参数会被识别为窗口标题,因此需要先补一个空的标题参数,再用引号包裹完整路径,正确写法如下:
cmd /C start "" "C:\Users\Bob Builder\Desktop\New Folder\test.exe"
如果是直接在CMD窗口执行,不需要前置cmd /C,也可以省略start直接执行路径:
:: 写法1 用start启动 start "" "C:\Users\Bob Builder\Desktop\New Folder\test.exe" :: 写法2 直接执行 "C:\Users\Bob Builder\Desktop\New Folder\test.exe"
PowerShell环境
PowerShell需要用调用运算符&搭配引号包裹的路径执行,也可以用自带的Start-Process命令:
# 写法1 直接调用执行 & "C:\Users\Bob Builder\Desktop\New Folder\test.exe" # 写法2 用Start-Process启动(别名start) Start-Process -FilePath "C:\Users\Bob Builder\Desktop\New Folder\test.exe" # 写法3 Start-Process简写 start "C:\Users\Bob Builder\Desktop\New Folder\test.exe"
通用规则
所有Windows命令行环境下,只要路径包含空格、&、括号等特殊字符,都需要用英文双引号包裹完整路径,避免被系统拆分为多个参数解析。
内容的提问来源于stack exchange,提问作者SharpFarter
相关产品推荐
相关产品推荐

