能调用批处理,但执行的内容不对,什么鬼?
批处理内容如下:@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又出问题了...
和我遇到的问题一样啊,我用创建任务计划去执行这个批处理管用,哈哈。。
https://www.autoitx.com/forum.php?mod=viewthread&tid=74588#lastpost 你要格式关联的程序是 WinRAR是64位版本,批处理默认也是调用64位 cmd.exe.
你需要将代码编译成64位程序,才可以直接调用这个批处理。
如果使用默认设置编译成32位程序,那么只会调用32位的 cmd.exe,
这时候,批处理会找不到 WINRAR的安装目录。
找不到winrar 自然不会去执行文件格式关联。
页:
[1]