You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell执行Start-Process时如何转义路径中的空格?

问题原因

PowerShell 5.1版本中Start-Process的-ArgumentList参数存在默认参数拆分逻辑:即便你用单引号包裹了带空格的路径,PowerShell传递参数给目标程序时,依然会把空格作为参数分隔符,把单个路径拆分为两个独立参数传递,因此Typora接收到的是两个不完整的路径参数,才会提示文件不存在。

解决方案

方案1:为路径额外嵌套转义双引号(保留Start-Process用法)

在路径外层额外包裹一层转义后的双引号,强制PowerShell将整个路径作为单个参数传递,转义双引号可以用反引号(`)实现:

Start-Process -FilePath 'C:\Program Files\Typora\Typora.exe' -ArgumentList "`"C:\Users\Administrator\Desktop\Hello world.md`""

也可以用三个双引号的写法实现同样的转义效果:

Start-Process -FilePath 'C:\Program Files\Typora\Typora.exe' -ArgumentList """C:\Users\Administrator\Desktop\Hello world.md"""

方案2:使用调用运算符&(无需额外转义)

如果你不需要Start-Process提供的后台启动、指定运行权限等特殊功能,直接使用PowerShell的调用运算符&启动程序更简单,单引号包裹的带空格路径会被直接识别为单个参数:

& 'C:\Program Files\Typora\Typora.exe' 'C:\Users\Administrator\Desktop\Hello world.md'

方案3:升级PowerShell版本

PowerShell 7及以上版本已经修复了Start-Process的参数拆分bug,你原来的原始写法在高版本PowerShell中可以直接正常运行,无需修改。

内容的提问来源于stack exchange,提问作者lanyuanxiaoyao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:36:03