【发布时间】:2013-08-01 07:52:10
【问题描述】:
真的需要帮助!不知疲倦地尝试了几个星期……
此脚本将更改所有子目录的属性,然后使用位于子目录的 \Icon 中的图标将创建一个相关的 Desktop.ini 更改文件夹图标和一些其他设置(如果有一个图标位于在\图标内)
@ECHO OFF
CHCP 1252 >NUL
set ICOINI=Desktop.ini
for /D %%d IN (*) do (
set "FOLDER=%%d"
call :write_File FOLDER
)
Pause
:Write_File
setlocal EnableDelayedExpansion
IF NOT EXIST "!FOLDER!\Icon\*.ico" goto :EOF
attrib +a +s "!FOLDER!" /d /s
for %%F in ("!FOLDER!\Icon\*.ico") do (set "ICO=%%~nxF")
IF EXIST "!FOLDER!\%ICOINI%" attrib -a -s -h "!FOLDER!\%ICOINI%"
(
echo [.ShellClassInfo]
echo IconResource=!CD:~2!\!FOLDER!\Icon\!ICO!, 0
echo IconFile=!CD:~2!\!Folder!\Icon\!ICO!
echo IconIndex=0
echo InfoTip=!ICO:~0,-4!
echo.
echo FolderType=Videos
echo DefaultDropEffect=4
echo ConfirmFileOp=1
)>"!FOLDER!\%ICOINI%"
attrib -a +s +h "!FOLDER!\%ICOINI%"
echo !FOLDER!
endlocal
goto :EOF
exit /b
该脚本的工作原理是更改相关文件夹的属性并创建 Desktop.ini(除非有感叹号!)。虽然它并不总是改变文件夹的图标。如果我手动将 Desktop.ini 更改为“.”,然后返回到 Desktop.ini,它会立即更改文件夹图标。那么有没有一种方法可以用圆滑的属性重命名 Desktop.ini 呢?
我目前解决这个问题的方法是这样的:
echo f | xcopy /Y /Q /H /R "!CD!\!FOLDER!\%ICOINI%" "!CD!\!FOLDER!\Desktoop.ini" /K
del /Q /AHS "!CD!\!FOLDER!\%ICOINI%"
echo f | xcopy /Y /Q /H /R "!CD!\!FOLDER!\Desktoop.ini" "!CD!\!FOLDER!\%ICOINI%" /K
del /Q /AHS "!CD!\!FOLDER!\Desktoop.ini"
很遗憾,这失败了,但我不知道为什么。 (它复制、删除、复制然后删除就好了)只是不会更改文件夹图标。
好的,我之前遇到过很多次这个问题,虽然其中一些与我的命令批处理脚本有关,但似乎不是这个问题。虽然我想要一些帮助来解决问题(如果这甚至可以批量处理!)。
【问题讨论】:
-
当您重命名 ini 文件时,文件管理器会注意到更改,我怀疑这就是图标当时更改的原因。如果您更改了一些ini文件并重新启动文件管理器,那么新图标是否也会出现?如果是这样,那么可能是刷新屏幕的问题(资源管理器中的 F5)。
-
@foxidrive 不,简单的刷新不会影响文件夹图标。有时,如果您在子目录中创建一个新文件或文件夹,它会,但不是 100%。
-
@Pranav N. 类似的问题,是的,但不是同一个问题。我找到了一个手动解决方案,只是询问是否有一种方法可以在批处理脚本的范围内自动化该解决方案。此外,当更改 Desktop.ini 时,文件夹图标不会改变,它不会改变,而是会在几秒钟后改变,尽管我没有测试超过三个小时。那里有一些重要但微妙的区别!
-
如果您重新启动 Windows 资源管理器,它们会出现吗?
标签: batch-file attributes icons command directory