如何在 PowerShell 单行代码中转义空格
How to escape spaces in a PowerShell one-liner
我想 运行 一个带有参数的 exe 使用 powershell 一行,就像这样 -
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" "
我尝试使用单引号或使用 ` 进行转义,但没有用
也许有人知道我做错了什么?
P.s。 运行从里面宁 cmd.exe
最简单的解决方案是对嵌入字符串使用单-引号('...'
):
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList 'C:\Program Files\somefile.txt', 'Run'"
由于将由 PowerShell 解释命令字符串,它会将嵌入的 '...'
字符串识别为字符串文字。
如果您尝试嵌入 双 引号字符串 ("..."
),您将面临两个障碍:
首先,PowerShell 的 CLI 需要 \
作为 "
的转义符(而 内部 是 `
),因此您需要将整个 "..."
命令字符串中的 "
转义为 \"
.
另外,由于known problem with Start-Process
,你需要额外的轮转义,这使解决方案非常晦涩难懂,因为 你必须将每个嵌入的 "
转义为 \"`\"
(!).
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList \"`\"C:\Program Files\somefile.txt\"`\", \"`\"Run\"`\" "
我想 运行 一个带有参数的 exe 使用 powershell 一行,就像这样 -
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" "
我尝试使用单引号或使用 ` 进行转义,但没有用
也许有人知道我做错了什么?
P.s。 运行从里面宁 cmd.exe
最简单的解决方案是对嵌入字符串使用单-引号('...'
):
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList 'C:\Program Files\somefile.txt', 'Run'"
由于将由 PowerShell 解释命令字符串,它会将嵌入的 '...'
字符串识别为字符串文字。
如果您尝试嵌入 双 引号字符串 ("..."
),您将面临两个障碍:
首先,PowerShell 的 CLI 需要
\
作为"
的转义符(而 内部 是`
),因此您需要将整个"..."
命令字符串中的"
转义为\"
.另外,由于known problem with
Start-Process
,你需要额外的轮转义,这使解决方案非常晦涩难懂,因为 你必须将每个嵌入的"
转义为\"`\"
(!).
powershell -ExecutionPolicy Unrestricted "Start-Process -Path program.exe -ArgumentList \"`\"C:\Program Files\somefile.txt\"`\", \"`\"Run\"`\" "