无忧启动论坛
标题:
怎样编写设置打开常见图片文件的默认程序的批处理?
[打印本页]
作者:
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 编辑
assoc .jpg=123.jpg
REG ADD "HKCR\123.jpg" /ve /t REG_SZ /d "jpg 图片" /f
REG ADD "HKCR\123.jpg\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
REG ADD "HKCR\123.jpg\shell\open" /ve /t REG_SZ /d "打开(&O)" /f
REG ADD "HKCR\123.jpg\shell\open\command" /ve /t REG_SZ /d ""%cd%\123.exe" /Shell" /f
REG ADD "HKCR\123.jpg\shell\open\ddeexec" /ve /t REG_SZ /d "[open("%%1")]" /f
REG ADD "HKCR\123.jpg\shell\open\ddeexec\Application" /ve /t REG_SZ /d "123" /f
REG ADD "HKCR\123.jpg\shell\open\ddeexec\Topic" /ve /t REG_SZ /d "control" /f
复制代码
assoc .jpg=123.jpg
REG ADD "HKCR\123.jpg" /ve /t REG_SZ /d "jpg 图片" /f
REG ADD "HKCR\123.jpg\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
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文件的格式,还有种书写方法
REG ADD "HKCR\.jpg" /ve /t REG_SZ /d "123.jpg" /f
REG ADD "HKCR\123.jpg" /ve /t REG_SZ /d "jpg 图片" /f
REG ADD "HKCR\123.jpg\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
REG ADD "HKCR\123.jpg\shell\open" /ve /t REG_SZ /d ""%cd%\123.exe" "%%1"" /f
复制代码
对了还有种终极偷懒的方法
REG ADD "HKCR\.jpg" /ve /t REG_SZ /d "123.tupian" /f
REG ADD "HKCR\.png" /ve /t REG_SZ /d "123.tupian" /f
REG ADD "HKCR\.gif" /ve /t REG_SZ /d "123.tupian" /f
REG ADD "HKCR\.bmp" /ve /t REG_SZ /d "123.tupian" /f
REG ADD "HKCR\123.tupian" /ve /t REG_SZ /d "图片文件" /f
REG ADD "HKCR\123.tupian\DefaultIcon" /ve /t REG_SZ /d ""%cd%\123.exe",1" /f
REG ADD "HKCR\123.tupian\shell\open" /ve /t REG_SZ /d "打开(&O)" /f
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