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

使用Start-Process调用ResourceHacker时参数传递异常求助

解决PowerShell脚本中ResourceHacker参数传递失败的问题

方法1:直接调用可执行文件(推荐,同步执行)

如果不需要异步运行ResourceHacker,直接调用exe比Start-Process更可靠,参数解析逻辑和命令行/交互式PowerShell完全一致:

$rhPath = Join-Path $CICDBaseScriptPath 'ResourceHacker.exe'
# 直接用变量替换路径
& $rhPath "-open `"$ReplaceTTKVersionInfoRC`" -save `"$TTKVersionInfoRes`" -action compile -log con"

方法2:正确使用Start-Process传递参数

如果必须用Start-Process(比如需要后台运行或控制窗口状态),不要手动拼接带嵌套引号的复杂字符串,要么传递参数数组,要么直接传递格式化后的参数串(无需外层单引号):

$rhPath = Join-Path $CICDBaseScriptPath 'ResourceHacker.exe'
# 方案A:用参数数组传递,更清晰
$arguments = @(
    "-open", "`"$ReplaceTTKVersionInfoRC`"",
    "-save", "`"$TTKVersionInfoRes`"",
    "-action", "compile",
    "-log", "con"
)
Start-Process -FilePath $rhPath -ArgumentList $arguments -Wait

# 方案B:直接传递格式化后的参数字符串
$argString = "-open `"$ReplaceTTKVersionInfoRC`" -save `"$TTKVersionInfoRes`" -action compile -log con"
Start-Process -FilePath $rhPath -ArgumentList $argString -Wait

问题根源

你原来的代码手动拼接了带外层单引号的嵌套引号字符串,比如"'open "..." -save "..." -action compile'"。但Start-Process不会像cmd/交互式PowerShell那样自动剥离外层单引号,它会把整个字符串(包括外层单引号)原封不动传给ResourceHacker,导致程序无法识别正确的命令参数,只会启动而不执行编译操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 08:27:35