windows - 如何在 PowerShell 单行中转义空格
问题描述
我想使用 powershell 一行运行带有参数的 exe,如下所示 -
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList somefile.txt, Run"
它可以工作,但是当我尝试插入带有空格的完整路径时,它会崩溃
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList "C:\Program Files\somefile.txt", "Run" "
我尝试使用单引号或使用 ` 转义,但这没有帮助
也许有人知道我做错了什么?
Ps 从 cmd.exe 内部运行
解决方案
最简单的解决方案是对嵌入的字符串使用单引号 ( '...'
) :
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList 'C:\Program Files\somefile.txt', 'Run'"
由于将解释命令字符串的是 PowerShell,因此它将嵌入的'...'
字符串识别为字符串文字。
如果您尝试嵌入双引号字符串 ( "..."
),您将面临两个障碍:
首先,PowerShell 的CLI需要
\
作为转义字符"
(而在内部是`
),因此您需要"
将整个"..."
命令字符串的内部转义为\"
.此外,由于 的一个已知问题
Start-Process
,您需要额外的一轮转义,这使得解决方案非常模糊和笨拙,因为您必须将每个嵌入转义"
为\"`\"
(!)。
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList \"`\"C:\Program Files\somefile.txt\"`\", \"`\"Run\"`\" "
推荐阅读
- android - 使用 Scala 进行 Android 开发
- vue.js - 为动态 nuxt 页面创建电报即时视图
- angular - 有没有办法限制动态创建的 Angular 屏幕?
- javascript - 我如何用网格水平居中文本
- alasql - alasql 从对象而不是数组中选择
- python - 使用一系列图像和 fps 值的 moviepy 保存视频会导致播放时的 fps 太快
- kotlin - 如何在 Gradle Kotlin DSL 中重用库声明?
- javafx - JavaFX 自定义图表类 - 如何将节点的 layoutX 和 layoutY 属性绑定到 NumberAxis 的显示位置?
- javascript - 将数据从服务器发送到客户端
- r - 去除异常值线性回归