ExeIconToFolder 提取exe程序图标,并设置exe所在文件夹图标

ExeIconToFolder 提取exe程序图标,并设置exe所在文件夹图标

2023年12月17日

提取exe程序图标,并设置exe所在文件夹图标

所需第三方程序

IconsExtract - EXE图标提取 (nirsoft.net)

Restart Explorer --- 重新启动资源管理器 (sordum.org)

iconsext.exe、Rexplorer.exe路径需要添加到环境变量中或使用绝对地址路径需要添加到环境变量中或使用绝对地址

代码

@echo off
setlocal enabledelayedexpansion

rem 检查是否有文件拖放到脚本上
if 1%1 equ 1 (echo 请将文件拖放到此脚本上。&pause>nul&exit)

rem 获取拖放到脚本上的 .exe 文件路径
set "exeFilePath=%1"
@REM echo 完整路径:%exeFilePath%

rem 获取 .exe 文件所在目录
for %%F in ("%exeFilePath%") do set "exeDirectory=%%~dpF"
set "exeDirectory=%exeDirectory:~0,-1%
echo 所在目录:%exeDirectory%

rem 获取 .exe 文件的文件名(不包含扩展名)
for %%F in ("%exeFilePath%") do set "exeFileName=%%~nF"
@REM echo 文件名称:%exeFileName%

rem 使用 IconsExtract 提取图标到当前目录
iconsext.exe /save "%exeFilePath%" "%exeFileName%" -icons -coursors

rem 获取生成的图标文件夹路径
set "iconFolder=%exeFileName%"


rem 在图标文件夹中查找 ICO 文件
set "maxSize=0"
set "iconFile="

REM 遍历文件夹中的所有 ICO 文件
for %%I in ("%iconFolder%\*.ico") do (
    set "iconSize=%%~zI"
    if !iconSize! gtr !maxSize! (
        set "maxSize=!iconSize!"
        set "iconFile=%%~fI"
    )
    set "iconFileName=%exeFileName%.ico"
)

echo %iconFile%
REM 判断ICO文件是否存在
if defined iconFile (
    cls
    echo 最大的图标文件是: %iconFile%
    echo 文件大小: %maxSize% 字节

    rem 复制 ICO 文件到当前目录并设置目录图标
    copy "%iconFile%" "%iconFileName%" > nul
    echo 图标已提取:%iconFileName%。
    
    echo 创建Desktop.ini文件内容
    if exist "desktop.ini" (
    attrib -s -h desktop.ini
    del "desktop.ini"
    )

    echo [.ShellClassInfo] > "desktop.ini"
    echo IconResource=%iconFileName%,0 >> "desktop.ini"
    echo [ViewState] >> "desktop.ini"
    echo FolderType=StorageProviderGeneric >> "desktop.ini"
    echo 设置文件夹属性为系统和隐藏
    @REM attrib +s +h %iconFileName%
    attrib +s +h "desktop.ini"
    attrib +r %exeDirectory%
    
    echo 刷新文件夹以应用更改
    @REM start Rexplorer.exe

) else (
    echo 未找到图标文件。
)

rem 删除生成的图标文件夹
if exist "%iconFolder%" rmdir /s /q "%iconFolder%"
@REM pause

posted @ 2023-12-17 17:58  生命在等待中延续  阅读(274)  评论(0编辑  收藏  举报