批处理内容如下:
@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又出问题了...
|