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

AutoHotkey中A_Args[1]传入字符串时StrReplace为何失效?

问题原因与修正方案

1. 命令行参数传递错误

Windows CMD不支持用单引号包裹命令行参数,你执行的命令会把带单引号的'$In-5,$Out-50'完整传给脚本,导致替换逻辑无法匹配$In、$Out(实际参数里是'$In、'$Out)。

修正命令行:改用双引号包裹参数:

.\somepath\AHKScript.ahk "$In-5,$Out-50"

2. 循环替换逻辑错误

第一段代码的循环每次都从原始的A_Args[1]重新生成RawArgs,而非基于上一次替换后的结果迭代处理。比如第一次替换$In后,第二次循环又用未修改的原始参数去替换$Out,直接覆盖了之前的结果,最终只有最后一次替换(此处Dogs无匹配项)生效,导致输出仍为原始字符串。

修正第一段代码:先将原始参数赋值给RawArgs,再在循环中迭代更新:

ObjectsList := ["In","Out", "Dogs"]
In     := 50
Out    := 100
Dogs   := 5

RawArgs := A_Args[1]  ; 先保存原始参数
For each, Obj in ObjectsList
    RawArgs := StrReplace(RawArgs, "$" Obj, %Obj%)

msgbox, % RawArgs

同时修正命令行后,即可得到预期的50-5,100-50输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:15:12