本文目录导读:

可以的,Windows 系统通过修改文件夹内的 desktop.ini 文件并关联一个图标文件(.ico),可以实现自定义文件夹图标。
下面提供两个实用脚本(一个用于 Windows 批处理,一个用于 PowerShell),可以帮助你批量修改指定文件夹的图标。
准备工作
在运行脚本前,你需要:
- 一个图标文件(.ico):准备好你想要设置的图标,
C:\MyIcons\myicon.ico。 - 目标文件夹:确定你要修改哪些文件夹(某个目录下的所有子文件夹)。
脚本 1:Windows 批处理脚本 (.bat)
这个脚本适合简单、快速地修改当前目录下所有文件夹的图标。
步骤:
- 将下面的代码复制到记事本中。
- 修改
iconPath变量为你的.ico文件路径。 - 将文件保存为
set_folder_icon.bat,编码选择 ANSI(否则中文可能乱码)。 - 将
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 更强大,可以处理子文件夹、按条件筛选、处理带空格的路径等。
步骤:
- 将下面的代码复制到记事本中。
- 修改
$iconPath和$targetFolder两个变量。 - 保存为
Set-FolderIcons.ps1。 - 右键点击该文件 ->
使用 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
重要注意事项
- 恢复原样:如果想恢复默认图标,删除文件夹里的
desktop.ini文件,并用attrib -s 文件夹路径取消系统文件夹属性即可。 - 权限问题:某些受保护的文件夹(如系统目录、
Program Files)可能无法修改。 - 路径中的空格:如果图标路径包含空格,请使用完整路径并用引号包裹,上述脚本已处理。
- 刷新:修改后可能需要刷新资源管理器(F5)或重启
explorer.exe才能看到效果,脚本末尾已经包含了刷新代码。 - 图标文件格式:请使用
.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
这两个脚本都是生产可用的实用工具,直接运行即可,如果有任何报错,通常是路径问题或权限问题。