AutoHotkey编译脚本无法工作

我编写了一段AutoHotkey脚本,在未编译的情况下能够正常工作,但是无论我使用哪个基础文件(.bin)来编译Ahk2Exe的exe,它都因为某种未知的原因失败。这是AHK脚本:

SetTitleMatchMode, 2
WinGet, PID, PID, Anime Studio ahk_class LM_Wnd
Process, Close, %PID%
if 1 && (%ErrorLevel% != 0)
{
Run, %1%
}

这是我从Lua脚本中运行它的方式(双引号是实际路径中的空格):

-- 对未编译的AHK(可用代码)执行
os.execute("C:/Users/JWesley/Desktop/AutoHotkey/AutoHotkeyU64.exe ".."\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS.ahk".."\"".." "..path)
-- 对编译后的AHK(不可用)
os.execute("\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS64.exe".."\"".." "..path)

我将变量“path”从Lua传递给AHK脚本(%1%)。我尝试将AHK编译后的exe设置为以管理员身份运行,但没有帮助。

path = "C:/Users/JWesley/Desktop/test.anime"

我尝试使用os.execute('pause')以便有机会读取任何命令提示消息,但第一个提示关闭之前暂停的提示就打开了。 编辑:好吧,我通过这个让提示保持打开状态:

os.execute("cmd.exe /k"..'"C:\\Users\\JWesley\\Desktop\\AutoHotkey\\AutoHotkeyU64.exe" "C:\\Users\\JWesley\\Files\\AS\\Anime Studio Pro\\scripts\\utility\\ReopenAS.ahk" "' .. path .. '"')

并在提示中收到了这条消息:

The filename, directory name, or volume label syntax is incorrect.
点赞
用户6343822
用户6343822

我在这里找到了一个解决方案:os.execute与包含空格的文件名和参数。结果证明这更是一个 Lua 问题,而不是 AutoHotkey,尽管我仍然不确定AHK脚本编译和未编译之间的差异。在Lua中,我检查路径是否包含空格,如果有:

path = "\""..path.."\""

然后我执行:

com = "\"".."type NUL && ".."\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS64.exe".."\"".." "..path.."\""
os.execute(com)

据说这可以防止命令行删除包含路径的空格所必需的外部引号。

现在我唯一的问题是编译脚本由于我的杀毒软件而运行缓慢,但这是一个单独的问题。

感谢反馈。

2016-05-18 04:52:04