如何在AHK中执行命令行传入的字符串形式数学表达式?
在AHK中执行命令行传入的数学表达式
针对AHK v1的解决方案
- 先正确接收并处理命令行参数,移除
$符号:
; 获取第一个命令行参数,去掉$符号 input := StrReplace(%1%, "$", "")
- 使用
%运算符触发表达式求值,直接计算字符串形式的表达式:
; 预定义变量Start/End要确保在当前作用域可访问 NewStartFrameIs := % input
如果直接求值报错,可尝试用括号包裹表达式,帮助AHK正确解析:
NewStartFrameIs := % "(" input ")"
针对AHK v2的解决方案
v2语法更规范,直接使用Expression()类的Eval()方法:
; 获取第一个命令行参数并移除$ input := StrReplace(A_Args[1], "$", "") ; 计算表达式 NewStartFrameIs := Expression(input).Eval()
注意事项
- 确保预定义变量(如
Start、End)是全局变量或在当前脚本作用域内已正确赋值,否则会因变量未定义报错。 - 命令行调用时必须给表达式加引号(如
.\Shift_IN.Ahk "$Start-5"),避免参数被系统拆分。
内容的提问来源于stack exchange,提问作者gaberiel__
相关产品推荐
相关产品推荐

