据我所知 - 您计算机(Windows)中的每个文件夹都包含一个Desktop.ini文件,它也定义了文件夹的图标(以及更多)。我们可以轻松浏览所有文件夹并修改其Desktop.ini文件。
@Echo off
SetLocal EnableDelayedExpansion
Set _Counter=0
Set _Files=0
Cls
REM Crawling through folders and injecting our own lines...
For %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (
If Exist "%%A:" If "%%A:" NEQ "!SystemDrive!" (
Cd /D "%%A:"
Cd /
For /f "Tokens=*" %%B in ('dir /s /b *.* /a:d') Do (
If Exist "%%B\Desktop.ini" (
Set _Counter=0
For /f "Usebackq Tokens=1,2 delims==" %%C in ("%%B\Desktop.ini") Do (
Set /A _Counter+=1
IF /I "%%C" == "IconResource" (
Set "_Icon_Path=%%D"
If /I "!_Icon_Path:~0,19!" == "C:\Windows\System32" (Set "_Line[!_Counter!]=%%C=!_Icon_Path:C:\Windows\System32=E:!")
) ELSE (IF /I "%%D" == "" (Set "_Line[!_Counter!]=%%C") ELSE (Set "_Line[!_Counter!]=%%C=%%D")
)
)
Call :Saveit !_Counter! "%%~B"
Set /a _Files+=1
)
)
)
)
Echo. You are Done in all the Drives. :^)
Echo. Total Files modified= %_Files%
Echo.
Pause
REM Extra Function...
:Saveit
Del /Q "%~2\Desktop.ini" >nul
For /L %%A in (1,1,%~1) Do (echo.!_Line[%%A]!>>"%~2\Desktop.ini")
Goto :Eof
根据您在评论中的最后一行问题和建议再次更新,现在您可以知道...它从结果中替换了 'C:\windows\system32'。仅当文件存在且仅当 iconresource 在第二个标记中包含上述字符串时。:)
这肯定会解决您在所有现有驱动器中的问题。而且,要在敏感区域进行修改 - 我建议以管理员身份运行它。
BAT团队