AutoIt中使用@ScriptDir宏调用Run函数的正确语法问题咨询
你的问题是字符串拼接时的引号位置错误,导致生成的命令行格式不符合AutoIt的Run函数要求。
你原有硬编码路径的写法中,是用单引号把完整的EXE路径完全包裹,再跟上参数,生成的命令行格式是'完整exe路径' 参数,系统可以正确识别可执行文件位置。
修改后的代码Run(@ScriptDir & "'\CONVERTER.exe' 7")拼接后生成的命令行实际为你的脚本所在目录'\CONVERTER.exe' 7,路径开头缺少对应的起始单引号,系统无法识别到合法的可执行文件路径,因此程序无法启动,又因为你没有捕获Run函数的返回值,所以不会有错误提示。
正确写法
写法1:对齐你原有的单引号包裹逻辑
Run("'" & @ScriptDir & "\CONVERTER.exe' 7")
这种写法拼接后生成的命令行和你最初能正常运行的硬编码格式完全一致。
写法2:更稳妥的双引号包裹方案(兼容含空格的路径)
如果你的脚本目录路径中存在空格,更推荐用双引号包裹路径,同时增加文件存在性判断,避免无响应的问题,写法如下:
Local $sExePath = @ScriptDir & "\CONVERTER.exe" If FileExists($sExePath) Then Run('"' & $sExePath & '" 7') Else MsgBox(16, "错误", "找不到目标程序:" & $sExePath) EndIf
内容的提问来源于stack exchange,提问作者Eliazar
相关产品推荐
相关产品推荐

