实用脚本能批量修改文件夹图标吗?

wen 实用脚本 3

本文目录导读:

实用脚本能批量修改文件夹图标吗?

  1. 准备工作
  2. 脚本 1:Windows 批处理脚本 (.bat)
  3. 脚本 2:PowerShell 脚本 (.ps1)
  4. 重要注意事项
  5. 小技巧:一键恢复默认图标

可以的,Windows 系统通过修改文件夹内的 desktop.ini 文件并关联一个图标文件(.ico),可以实现自定义文件夹图标。

下面提供两个实用脚本(一个用于 Windows 批处理,一个用于 PowerShell),可以帮助你批量修改指定文件夹的图标。


准备工作

在运行脚本前,你需要:

  1. 一个图标文件(.ico):准备好你想要设置的图标,C:\MyIcons\myicon.ico
  2. 目标文件夹:确定你要修改哪些文件夹(某个目录下的所有子文件夹)。

脚本 1:Windows 批处理脚本 (.bat)

这个脚本适合简单、快速地修改当前目录下所有文件夹的图标。

步骤:

  1. 将下面的代码复制到记事本中。
  2. 修改 iconPath 变量为你的 .ico 文件路径。
  3. 将文件保存为 set_folder_icon.bat,编码选择 ANSI(否则中文可能乱码)。
  4. set_folder_icon.bat 放到你要修改图标的父文件夹中,双击运行。
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: 修改这里!设置为你的 .ico 文件路径
set "iconPath=C:\MyIcons\myicon.ico"
:: 注意:路径中不要有空格,如果有空格可以用引号,但下面的命令要相应调整
if not exist "%iconPath%" (
    echo 图标文件不存在:%iconPath%
    pause
    exit /b
)
echo 正在批量修改当前目录下所有文件夹的图标...
echo.
for /d %%i in (*) do (
    if not "%%i"=="." (
        echo 处理文件夹:%%i
        :: 1. 设置文件夹属性为系统文件夹(以便显示自定义图标)
        attrib +s "%%i"
        :: 2. 创建或覆盖 desktop.ini 文件
        (
            echo [.ShellClassInfo]
            echo IconResource=%iconPath%,0
            echo IconFile=%iconPath%
            echo IconIndex=0
        ) > "%%i\desktop.ini"
        :: 3. 设置 desktop.ini 文件属性为 系统+隐藏+只读
        attrib +s +h +r "%%i\desktop.ini"
    )
)
echo.
echo 完成!按任意键刷新资源管理器以查看效果。
pause >nul
:: 刷新资源管理器
taskkill /f /im explorer.exe >nul 2>&1
start explorer.exe

脚本 2:PowerShell 脚本 (.ps1)

PowerShell 更强大,可以处理子文件夹、按条件筛选、处理带空格的路径等。

步骤:

  1. 将下面的代码复制到记事本中。
  2. 修改 $iconPath$targetFolder 两个变量。
  3. 保存为 Set-FolderIcons.ps1
  4. 右键点击该文件 -> 使用 PowerShell 运行(如果报权限错误,先执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser)。
# 设置图标文件路径(可以包含空格)
$iconPath = "C:\MyIcons\myicon.ico"
# 设置要修改的父文件夹路径(当前脚本所在目录)
$targetFolder = Get-Location
# 如果你想修改某个特定目录,可以取消下面一行的注释并修改路径
# $targetFolder = "D:\你的文件夹"
# 检查图标文件是否存在
if (-not (Test-Path $iconPath)) {
    Write-Host "错误:图标文件不存在: $iconPath" -ForegroundColor Red
    exit
}
Write-Host "正在批量修改文件夹图标..." -ForegroundColor Cyan
Write-Host "目标文件夹: $targetFolder" -ForegroundColor Yellow
Write-Host "图标文件: $iconPath" -ForegroundColor Yellow
Write-Host ""
# 获取所有子文件夹(可改为 -Recurse 以包含深层子文件夹)
$folders = Get-ChildItem -Path $targetFolder -Directory
foreach ($folder in $folders) {
    Write-Host "处理: $($folder.Name)" -ForegroundColor Green
    # 1. 设置文件夹属性为系统文件夹
    attrib +s $folder.FullName
    # 2. 创建 desktop.ini 文件内容
    $desktopIniContent = @"
[.ShellClassInfo]
IconResource=$iconPath,0
IconFile=$iconPath
IconIndex=0
"@
    # 3. 写入 desktop.ini(覆盖方式)
    $desktopIniPath = Join-Path -Path $folder.FullName -ChildPath "desktop.ini"
    $desktopIniContent | Out-File -FilePath $desktopIniPath -Encoding ASCII -Force
    # 4. 设置 desktop.ini 属性:系统+隐藏+只读
    attrib +s +h +r $desktopIniPath
}
Write-Host ""
Write-Host "操作完成!" -ForegroundColor Cyan
Write-Host "请按下任意键刷新资源管理器..." -ForegroundColor Gray
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
# 刷新资源管理器
Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue
Start-Process explorer

重要注意事项

  1. 恢复原样:如果想恢复默认图标,删除文件夹里的 desktop.ini 文件,并用 attrib -s 文件夹路径 取消系统文件夹属性即可。
  2. 权限问题:某些受保护的文件夹(如系统目录、Program Files)可能无法修改。
  3. 路径中的空格:如果图标路径包含空格,请使用完整路径并用引号包裹,上述脚本已处理。
  4. 刷新:修改后可能需要刷新资源管理器(F5)或重启 explorer.exe 才能看到效果,脚本末尾已经包含了刷新代码。
  5. 图标文件格式:请使用 .ico 文件,其他格式(如 .png)可能无法正常显示。

小技巧:一键恢复默认图标

如果你需要取消自定义,可以写一个简单的批处理:

@echo off
for /d %%i in (*) do (
    if exist "%%i\desktop.ini" (
        attrib -s -h -r "%%i\desktop.ini"
        del "%%i\desktop.ini" /q
        attrib -s "%%i"
        echo 已恢复: %%i
    )
)
taskkill /f /im explorer.exe >nul
start explorer.exe

这两个脚本都是生产可用的实用工具,直接运行即可,如果有任何报错,通常是路径问题或权限问题。

抱歉,评论功能暂时关闭!