无忧启动论坛

标题: 怎样编写设置打开常见图片文件的默认程序的批处理? [打印本页]

作者: diwu2005    时间: 2022-10-14 17:25
标题: 怎样编写设置打开常见图片文件的默认程序的批处理?
因要用到Vieas软件来打开bmp、jpg、png、gif常用文件,需要设置默认打开程序,想用批处理的方式来实现。网上找不到相关资料,请知道的兄弟指点一下,先谢谢了!!
作者: 2010techon    时间: 2022-10-14 17:31
assoc和ftype
实际都是操作注册表
作者: wxinchun92    时间: 2022-10-14 18:07
实在找不到换Imagine吧,方便
作者: wxinchun92    时间: 2022-10-14 18:14
或者先手动关联,然后对比注册表
其实iview也不错
作者: nttwqz    时间: 2022-10-14 20:49
由于相关接口被滥用,很多原来脚本比较简单易于实现的功能,比如设置文件关联、锁定到任务栏,添加到右键菜单(11)、设置默认浏览器等都变得更加复杂,图形操作倒是不复杂。assoc也早就残废好多年了,别说设置关联了,就是解除关联都无效。

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

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.avi\UserChoice
作者: kli    时间: 2022-10-14 21:32
本帖最后由 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

作者: dandd136    时间: 2022-10-14 21:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: kli    时间: 2022-10-14 21:41
本帖最后由 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之后很恶心




作者: 9zhmke    时间: 2022-10-15 09:26
本帖最后由 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]
作者: diwu2005    时间: 2022-10-17 07:55
感谢以上行家的指导。我先试用一下,再来向各位汇报。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3