无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3139|回复: 9
打印 上一主题 下一主题

[求助] 怎样编写设置打开常见图片文件的默认程序的批处理?

[复制链接]
跳转到指定楼层
1#
发表于 2022-10-14 17:25:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因要用到Vieas软件来打开bmp、jpg、png、gif常用文件,需要设置默认打开程序,想用批处理的方式来实现。网上找不到相关资料,请知道的兄弟指点一下,先谢谢了!!
2#
发表于 2022-10-14 17:31:06 | 只看该作者
assoc和ftype
实际都是操作注册表
回复

使用道具 举报

3#
发表于 2022-10-14 18:07:10 | 只看该作者
实在找不到换Imagine吧,方便
回复

使用道具 举报

4#
发表于 2022-10-14 18:14:34 | 只看该作者
或者先手动关联,然后对比注册表
其实iview也不错
回复

使用道具 举报

5#
发表于 2022-10-14 20:49:57 | 只看该作者
由于相关接口被滥用,很多原来脚本比较简单易于实现的功能,比如设置文件关联、锁定到任务栏,添加到右键菜单(11)、设置默认浏览器等都变得更加复杂,图形操作倒是不复杂。assoc也早就残废好多年了,别说设置关联了,就是解除关联都无效。

我记得,即使设置了注册表,那好像也是所有用户的,对当前用户而言,可能会提示你选择,貌似是只有你写入了相关注册表才能生效,不过,用户选择需要用到一个hash值,不知道相关算法及API,直接备份可能无效,依稀记得很久之前弄过,自己研究一下。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.avi\UserChoice

评分

参与人数 1无忧币 +4 收起 理由
diwu2005 + 4 赞一个!

查看全部评分

回复

使用道具 举报

6#
发表于 2022-10-14 21:32:36 | 只看该作者
本帖最后由 kli 于 2022-10-14 21:35 编辑
  1. assoc .jpg=123.jpg
  2. REG ADD "HKCR\123.jpg" /ve /t REG_SZ /d "jpg 图片" /f
  3. REG ADD "HKCR\123.jpg\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
  4. REG ADD "HKCR\123.jpg\shell\open" /ve /t REG_SZ /d "打开(&O)" /f
  5. REG ADD "HKCR\123.jpg\shell\open\command" /ve /t REG_SZ /d ""%cd%\123.exe" /Shell" /f
  6. REG ADD "HKCR\123.jpg\shell\open\ddeexec" /ve /t REG_SZ /d "[open("%%1")]" /f
  7. REG ADD "HKCR\123.jpg\shell\open\ddeexec\Application" /ve /t REG_SZ /d "123" /f
  8. REG ADD "HKCR\123.jpg\shell\open\ddeexec\Topic" /ve /t REG_SZ /d "control" /f
复制代码


  1. assoc .jpg=123.jpg
  2. REG ADD "HKCR\123.jpg" /ve /t REG_SZ /d "jpg 图片" /f
  3. REG ADD "HKCR\123.jpg\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
  4. REG ADD "HKCR\123.jpg\shell\open" /ve /t REG_SZ /d ""%cd%\123.exe" "%%1"" /f
复制代码



给你两种模版,第一种好像是现在新软件的打开方式,不知道要配合win10或者win11的什么新特性

第二种是以前旧的打开方式,比较直接,推荐第二种,代码比较精简

DefaultIcon项是不显示缩略图状态下图片的图标,需要你自己在图片浏览器的exe程序或者某个dll里自己找,可以用Greenfish Icon Editor Pro这个免费软件打开exe或者dll,顺序是左边开始竖着数,序号从0开始,比如123.exe,0或者321.dll,2

评分

参与人数 1无忧币 +5 收起 理由
diwu2005 + 5 很给力!

查看全部评分

回复

使用道具 举报

7#
发表于 2022-10-14 21:36:47 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

8#
发表于 2022-10-14 21:41:42 | 只看该作者
本帖最后由 kli 于 2022-10-14 21:52 编辑
dandd136 发表于 2022-10-14 21:36
请问123.jpg是什么意思啊

是方便你区分的命名,比如你用软件是XnView这个图片软件
就命名为XnView.jpg;XnView.bmp;XnView.png之类的

还有如果用assoc命令不喜欢的话,想统一bat文件的格式,还有种书写方法

  1. REG ADD "HKCR\.jpg" /ve /t REG_SZ /d "123.jpg" /f

  2. REG ADD "HKCR\123.jpg" /ve /t REG_SZ /d "jpg 图片" /f
  3. REG ADD "HKCR\123.jpg\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
  4. REG ADD "HKCR\123.jpg\shell\open" /ve /t REG_SZ /d ""%cd%\123.exe" "%%1"" /f
复制代码

对了还有种终极偷懒的方法
  1. REG ADD "HKCR\.jpg" /ve /t REG_SZ /d "123.tupian" /f
  2. REG ADD "HKCR\.png" /ve /t REG_SZ /d "123.tupian" /f
  3. REG ADD "HKCR\.gif" /ve /t REG_SZ /d "123.tupian" /f
  4. REG ADD "HKCR\.bmp" /ve /t REG_SZ /d "123.tupian" /f

  5. REG ADD "HKCR\123.tupian" /ve /t REG_SZ /d "图片文件" /f
  6. REG ADD "HKCR\123.tupian\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
  7. REG ADD "HKCR\123.tupian\shell\open" /ve /t REG_SZ /d "打开(&O)" /f
  8. REG ADD "HKCR\123.tupian\shell\open" /ve /t REG_SZ /d ""%cd%\123.exe" "%%1"" /f
复制代码
把软件所有支持的格式全关联到某个同样的项里,可以偷懒只写一遍打开

最后还要说的是,hkcr如果不起效果,可以试试hklm
hkcr代表安装到个人账户,hklm是整个机器的用户,以前win7时代随便那个都行,win10之后很恶心



评分

参与人数 2无忧币 +6 收起 理由
diwu2005 + 5 很给力!
dandd136 + 1 很给力!

查看全部评分

回复

使用道具 举报

9#
发表于 2022-10-15 09:26:58 | 只看该作者
本帖最后由 9zhmke 于 2022-10-15 09:30 编辑

我之前只用一种也出问题,后来就把两种方法都用上才好一些。
这里使用了删除之前的注册表的方案,比直接加注册表的情况成功率高一点点,但也会伤害到之前的图片打开软件。
理论上你把soft_exe和software改成你自己的软件就可以了,实际上还是不一定,有些软件这么用不一定能成功,要根据实际情况调整


[code]
ECHO 程序运行中,请稍等.....
pushd "%~dp0" >nul 2>&1
setlocal enabledelayedexpansion
del tmp.reg >nul 2>nul

:开始
set p=%cd%
set soft_exe=xnviewmp.exe
set software=XnView
echo >tmp.reg Windows Registry Editor Version 5.00
for %%i in (raw,crw,cr2,raf,dcr,mrw,nef,orf,pef,srf,x3f,iff,sgi,xbm,xpm,emf,pcx,tga,png,bmp,jpg,jpeg,gif,ico,psd,tif,tiff,ais,ani,cur,emf,eps,lwf,webp,wmf,heic) do (
    echo >>tmp.reg [-HKEY_CLASSES_ROOT\.%%i]
    echo >>tmp.reg [HKEY_CLASSES_ROOT\.%%i]
    echo >>tmp.reg @="%software%.%%i"
    echo >>tmp.reg "PerceivedType"="%software%"
    echo >>tmp.reg "Content Type"=""
    echo >>tmp.reg [HKEY_CLASSES_ROOT\.%%i\OpenWithList]
    echo >>tmp.reg [HKEY_CLASSES_ROOT\.%%i\OpenWithList\%soft_exe%]
    echo >>tmp.reg @=""
    echo >>tmp.reg [HKEY_CLASSES_ROOT\.%%i\OpenWithProgIds]
    echo >>tmp.reg "%software%.%%i"=""
    echo >>tmp.reg [HKEY_CLASSES_ROOT\.%%i\PersistentHandler]
    echo >>tmp.reg @="{098f2470-bae0-11cd-b579-08002b30bfeb}"
    echo >>tmp.reg [HKEY_CLASSES_ROOT\.%%i\UndoClass]
    echo >>tmp.reg @="%software%.%%i"
    echo >>tmp.reg [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%i]
    echo >>tmp.reg [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%i]
    echo >>tmp.reg [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%i\OpenWithProgids]
    echo >>tmp.reg "%software%.%%i"=hex^(0^)^:
    echo >>tmp.reg [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%i\UserChoice]
    echo >>tmp.reg "Hash"="AUGg6DegRxo="
    echo >>tmp.reg "ProgId"="%software%.%%i"
    )
echo. >>tmp.reg
regedit /s tmp.reg
del tmp.reg
for %%i in (raw,crw,cr2,raf,dcr,mrw,nef,orf,pef,srf,x3f,iff,sgi,xbm,xpm,emf,pcx,tga,png,bmp,jpg,jpeg,gif,ico,psd,tif,tiff,ais,ani,cur,emf,eps,lwf,webp,wmf,heic) do assoc .%%i=%software%.%%i&ftype %software%.%%i="%cd%\%soft_exe%" "%%1"
:EXIT
[code]

评分

参与人数 1无忧币 +5 收起 理由
diwu2005 + 5 很给力!

查看全部评分

回复

使用道具 举报

10#
 楼主| 发表于 2022-10-17 07:55:30 | 只看该作者
感谢以上行家的指导。我先试用一下,再来向各位汇报。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-15 06:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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