我一直试图弄清楚如何扩展AutoHotkey字符串中的任何变量。在我的具体情况下,我从文件中读取一行并运行它。该行可能包含一个或多个变量引用,这些引用在传递给Foo:="%A_MyDocuments%\blah.txt"
Bar=%Foo%
MsgBox %Bar%
a=1
b:="%a%+1=2"
MsgBox % b
之前需要进行扩展。
这是一些测试(不起作用):
CREATE OR REPLACE VIEW VW_INVOICES
AS
SELECT INVOICE_LINE_ITEM.INVOICE_ID, INVOICE.SALESPERSON_ID,
SALESPERSON.SALESPERSON_NAME, SALESPERSON.COMMISSION,
INVENTORY.ITEM_NUM, INVENTORY.INV_QUANTITY,
INVOICE.CUSTOMER_ID, CUSTOMER.CUSTOMER_BALANCE
FROM INVOICE_LINE_ITEM, INVOICE, SALESPERSON, INVENTORY, CUSTOMER
JOIN INVOICE ON INVOICE.INVOICE_ID = INVOICE_LINE_ITEM.INVOICE_ID
JOIN SALESPERSON ON SALESPERSON.SALESPERSON_ID = INVOICE.SALESPERSON_ID
JOIN INVOICE ON INVOICE.ITEM_NUM = INVENTORY.ITEM_NUM
JOIN CUSTOMER ON CUSTOMER.CUSTOMER_ID = INVOICE.CUSTOMER_ID;
JOIN INVOICE ON INVOICE.INVOICE_ID = INVOICE_LINE_ITEM.INVOICE_ID
我花了两个小时搜索文档和互联网,发现没有任何效果。有几个近距离通话,但没有任何匹配这种情况。
答案 0 :(得分:0)
你有一些'='和':='混淆了。
说“B:=%A%+ 1 = 2"是一个字符串,你试图在字符串中“设置”2的答案而不是计算?
应该是这样的:
A = 1
B := A + 1
Msgbox, % B
Or
A = 1
B = %A% + 1
Msgbox, % B
Or
Foo = %A_MyDocuments% . “\blah.txt”
Bar := Foo
Msxbox, %Bar%
答案 1 :(得分:0)
没有本地方式这样做。我看到两个选择。 使用AutoHotkey.dll来评估您的表达式或为您的作业运行另一个AutoHotkey.exe实例。
例如:
Foo:="%A_MyDocuments%\blah.txt"
Bar := Eval(Foo)
MsgBox %Bar%
Eval(exp) {
Static tempScript := A_ScriptDir "\tmp_eval.ahk"
Static tempOutput := A_ScriptDir "\tmp_eval_out.txt"
FileDelete, %tempScript%
FileDelete, %tempOutput%
FileAppend, % "FileAppend, " exp ", " tempOutput , %tempScript%
RunWait, %A_AhkPath% "%tempScript%"
FileRead, output, %tempOutput%
FileDelete, %tempScript%
FileDelete, %tempOutput%
Return output
}
答案 2 :(得分:0)