找回密码
 加入
搜索
查看: 259|回复: 2

[AU3基础] 能调用批处理,但执行的内容不对,什么鬼?

[复制链接]
发表于 2026-1-15 20:31:22 | 显示全部楼层 |阅读模式
批处理内容如下:


@echo off
setlocal enabledelayedexpansion
set compress=rar,zip,7z,arj,bz2,cab,gz,jar,lz,lzh,tar,uue,xz,z,zipx,zst,001
cd /d "%~dp0"
set "reg_key=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver"
set "reg_value=DisplayIcon"
for /f "tokens=2*" %%a in ('reg query "%reg_key%" /v "%reg_value%" 2^>nul') do (
    set "raw_path=%%b"
)

for /f "delims=," %%a in ("!raw_path!") do (
    set "exe=%%a"
)

if not defined exe (
    pause
    exit /b 1
)
set "pid=WinRAR"
for %%i in (%compress%) do (
    SFTA.exe --reg "!exe!" ".%%i" "!pid!"
)

命名为tempcmd.bat。
然后不管是用ShellExecute(@ScriptDir & "\tempcmd.bat", "", "", $SHEX_OPEN, @SW_SHOW)还是RunWait("cmd /c " & @ScriptDir&"\"&"tempcmd.bat","",@SW_MAXIMIZE)调用执行,都出来个DOS框提示按任意键继续。
双击tempcmd.bat可以正确执行。是不是AU3调用批处理后批处理找不到设置的变量了(SFTA.exe文件和注册表键值确定存在)
吐槽一下Win11的文件关联机制,安装完RAR后常见的压缩格式不能自动关联,还得挨个格式双击再选RAR始终打开才行。所以才找到SFTA.exe和bat脚本来解决。结果调用bat又出问题了...

发表于 2026-1-16 15:08:01 | 显示全部楼层
和我遇到的问题一样啊,我用创建任务计划去执行这个批处理管用,哈哈。。
https://www.autoitx.com/forum.ph ... ;tid=74588#lastpost
发表于 2026-1-21 22:20:21 | 显示全部楼层
你要格式关联的程序是 WinRAR是64位版本,批处理默认也是调用64位 cmd.exe.
你需要将代码编译成64位程序,才可以直接调用这个批处理。

如果使用默认设置编译成32位程序,那么只会调用32位的 cmd.exe,
这时候,批处理会找不到 WINRAR的安装目录。
找不到winrar 自然不会去执行文件格式关联。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-2-18 18:08 , Processed in 0.072758 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表