无忧启动论坛

标题: 高手请进,如何用reshacker批量替换图标资源? [打印本页]

作者: kokozzz123    时间: 3 天前
标题: 高手请进,如何用reshacker批量替换图标资源?
RT,都知道reshacker可以替换exe或dll文件里的图标资源,不过reshacker貌似一次只能替换exe或dll文件里的一个图标对象,如果要替换的图标如果多了,就会很烦人

假设d:/test.dll里编号1-20的图标都是要替换的,而d:/x文件夹已经准备好对应的、用于替换的1-20图标资源(文件名与要替换的对象完全一致),如何让reshacker一次性用d:/x文件夹里的图标资源替换掉d:/test.dll里的编号1-20图标?

求高手赐教~
作者: nttwqz    时间: 3 天前
这玩意支持命令行
作者: w8223161    时间: 3 天前
别人怎么弄的我不清楚,但是我用的是按键精灵~
作者: tt911    时间: 3 天前
1.先找规律
2.再编程序
3.分而克之
4.神功大成
作者: 门口    时间: 3 天前
本帖最后由 门口 于 2025-8-26 12:32 编辑

可以写资源修改脚本,然后用rh调用。具体可以参考官方帮助。
下面是个脚本例子(可命名为:改图标脚本.txt ):

[FILENAMES]
Exe=    d:\test.dll
SaveAs= d:\testNew.dll
//Log=

[COMMANDS]
-addoverwrite 1\1.ico ICON,1
-addoverwrite 1\2.ico ICON,2
-addoverwrite 1\3.ico ICON,3
。。

晕,这里代码标签有问题吗

然后命令行或批处理内调用:ResourceHacker.exe -script 改图标脚本.txt



作者: guong    时间: 3 天前
来学习下
作者: Herofmd    时间: 3 天前
我一般用IconWork,傻瓜简单~~
作者: dksoft    时间: 3 天前
进来学习
作者: 进士小站    时间: 3 天前
以前汉化软件用过
个人感觉替换资源后程序容易出错
作者: 肉仔    时间: 3 天前
进来学习

作者: 断剑留痕    时间: 3 天前
:: 定义图标映射表(索引:文件名)
set "iconMap[0]=7z.ico"
set "iconMap[1]=zip.ico"
set "iconMap[2]=bz2.ico"
set "iconMap[3]=rar.ico"
set "iconMap[4]=arj.ico"
set "iconMap[5]=z.ico"
set "iconMap[6]=lha.ico"
set "iconMap[7]=cab.ico"
set "iconMap[8]=iso.ico"
set "iconMap[9]=001.ico"
set "iconMap[10]=rpm.ico"
set "iconMap[11]=deb.ico"
set "iconMap[12]=cpio.ico"
set "iconMap[13]=tar.ico"
set "iconMap[14]=gz.ico"
set "iconMap[15]=wim.ico"
set "iconMap[16]=lzh.ico"
set "iconMap[17]=dmg.ico"
set "iconMap[18]=hfs.ico"
set "iconMap[19]=xar.ico"
set "iconMap[20]=vhd.ico"
set "iconMap[21]=fat.ico"
set "iconMap[22]=ntfs.ico"
set "iconMap[23]=xz.ico"
set "iconMap[24]=sqfs.ico"
set "iconMap[25]=apfs.ico"
set "iconMap[26]=zst.ico"

:: 批量替换图标
rem 【x64】
:: 备份原始文件
copy /y "x64\7z.dll" "x64\7z_原文件.dll" >nul

for /l %%i in (0,1,26) do (
    set "currentIcon=Bandizip_ico\!iconMap[%%i]!"
    echo 正在替换索引 %%i 的图标:!currentIcon!
    ResourceHacker.exe ^
        -open "x64\7z.dll" ^
        -save "x64\7z.dll" ^
        -action addoverwrite ^
        -res "!currentIcon!" ^
        -mask ICONGROUP,%%i
)

作者: kokozzz123    时间: 前天 09:15
门口 发表于 2025-8-26 12:29
可以写资源修改脚本,然后用rh调用。具体可以参考官方帮助。
下面是个脚本例子(可命名为:改图标脚本.txt ...

运行没有任何结果……
作者: ootdyao    时间: 前天 10:08
感谢各位分享经验
作者: 红五星云少    时间: 前天 12:20
Herofmd 发表于 2025-8-26 13:37
我一般用IconWork,傻瓜简单~~

试试大佬说的这个软件怎么样
作者: 门口    时间: 前天 12:33
kokozzz123 发表于 2025-8-27 09:15
运行没有任何结果……

你是怎么写的脚本,怎么运行的,看下运行的日志文件
作者: 527104427    时间: 前天 12:45
断剑留痕 发表于 2025-8-26 17:04
:: 定义图标映射表(索引:文件名)
set "iconMap[0]=7z.ico"
set "iconMap[1]=zip.ico"

厉害
作者: kokozzz123    时间: 昨天 09:34
本帖最后由 kokozzz123 于 2025-8-28 09:42 编辑
527104427 发表于 2025-8-27 12:45
厉害

不好意思,回错人了
作者: kokozzz123    时间: 昨天 09:42
本帖最后由 kokozzz123 于 2025-8-28 10:22 编辑
断剑留痕 发表于 2025-8-26 17:04
:: 定义图标映射表(索引:文件名)
set "iconMap[0]=7z.ico"
set "iconMap[1]=zip.ico"

1:我的需求是替换的图标都是同源图标相同文件名,比如iconMap[0]=7z.ico 应该是 iconMap[0]=0.ico ,以此类推,而且我不想一行一行的写对招代码(比如修改序列14-255的图标,一行一行写set代码会疯的),请问如何修改代码?

2 范例中的修改对象是bat同文件夹下(我的推测没错吧)x64\7z.dll,能否在代码开头由用户通过一个变量实现自定义指定?

3 范例中的set "currentIcon=Bandizip_ico\!iconMap[%%i]!" 看不懂,什么意思?是指用于替换的ico文件在bat同文件夹下的Bandizip_ico\文件夹下吗,同样的,能否在代码开头由用户通过一个变量实现自定义指定?

作者: 断剑留痕    时间: 昨天 10:13
kokozzz123 发表于 2025-8-28 09:42
1:我的需求是替换的图标都是同源图标相同文件名,比如iconMap[0]=7z.ico 应该是 iconMap[0]=1.ico ,以 ...

我这个是调用 ResourceHacker.exe 来实现的,就算不一一对应,也精简不了多少了,让其他大佬提供其他代码帮你吧。
作者: BEIKING    时间: 昨天 10:18
断剑留痕 发表于 2025-8-26 17:04
:: 定义图标映射表(索引:文件名)
set "iconMap[0]=7z.ico"
set "iconMap[1]=zip.ico"

牛逼佬,就是效率有点低下,
像这样固定的建议是直接写在配置文件,然后reshack一次调用




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