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

发布时间 2023-12-17 17:58:05作者: 生命在等待中延续

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

2023年12月17日

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

所需第三方程序

第三方程序放在脚本所在目录

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

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

代码

@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

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

rem 在图标文件夹中查找 ICO 文件
set "iconFile="
for %%I in ("%iconFolder%\*.ico") do (
    set "iconFile=%%~fI"
    set "iconFileName=%exeFileName%.ico"
    goto :foundIcon
)

:foundIcon
if defined iconFile (
    rem 复制 ICO 文件到当前目录并设置目录图标
    copy "%iconFile%" "%iconFileName%" > nul
    echo 图标已提取:%iconFileName%。
    rem 使用 NirCmd 设置目录图标
    @REM nircmd.exe seticon "%exeDirectory%" "%exeFileName%.ico"
    
    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 刷新文件夹以应用更改
    start Rexplorer.exe

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

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