|
|
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: =============== 检测 IrfanView 安装路径 ===============
set "IVIEW_PATH="
:: 方法1:从注册表查找(最可靠)
for /f "tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\i_view64.exe" /v "" 2^>nul') do set "IVIEW_PATH=%%b"
if not defined IVIEW_PATH (
for /f "tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\i_view32.exe" /v "" 2^>nul') do set "IVIEW_PATH=%%b"
)
:: 方法2:若注册表未找到,尝试默认路径
if not defined IVIEW_PATH (
if exist "%ProgramFiles%\IrfanView\i_view64.exe" set "IVIEW_PATH=%ProgramFiles%\IrfanView\i_view64.exe"
)
if not defined IVIEW_PATH (
if exist "%ProgramFiles(x86)%\IrfanView\i_view32.exe" set "IVIEW_PATH=%ProgramFiles(x86)%\IrfanView\i_view32.exe"
)
:: 若仍未找到,提示用户
if not defined IVIEW_PATH (
echo.
echo ❌ 未检测到 IrfanView 安装。
echo 请确保已安装 IrfanView
pause
exit /b 1
)
:: 规范化路径(去除引号)
set "IVIEW_PATH=!IVIEW_PATH:"=!"
echo.
echo ✅ 检测到 IrfanView: "!IVIEW_PATH!"
echo 正在关联图片格式...
:: =============== 定义要关联的扩展名列表 ===============
set "EXT_LIST=.jpg .jpeg .png .gif .bmp .tif .tiff .webp .ico .cur .ani .psd .pcx .jp2 .jxr .svg .avif"
:: =============== 为每个扩展名设置关联 ===============
for %%e in (%EXT_LIST%) do (
echo 关联 %%e ...
:: 设置文件类型(如 iview.jpgfile)
assoc %%e=iview.%%~ne.file >nul
:: 设置打开命令(带引号防空格)
ftype iview.%%~ne.file="%IVIEW_PATH%" "%%1" >nul
)
:: =============== 可选:设置默认图标(需管理员权限,此处跳过) ===============
:: 注:Windows 11 通常自动使用程序图标,无需手动设
echo.
echo 🎉 所有图片格式已成功关联到 IrfanView!
echo 请重启资源管理器或注销以完全生效。
echo.
pause
补充说明
为什么不用注册表直接写?
assoc/ftype 是微软推荐的用户级关联方式,不破坏系统完整性,且兼容 UAC。 |
|