我写了一个批处理脚本来细读文件夹中的所有png文件,并在存在相同名称的文件夹时将它们分配为文件夹图片。
将信息写入desktop.ini
文件时,脚本可以完美地工作。只有一个小问题:它不起作用。我无法获取文件夹来读取修改后的desktop.ini
文件并更新其图片。
我正在使用Windows 8.1。我怀疑我需要删除某种缓存,但是我不知道该删除哪些缓存以及如何删除。据我了解,更改文件夹图标时,您需要杀死explorer.exe,删除iconcache文件并重新启动explorer.exe。
我不知道iconcache文件是否还存储文件夹图片,但是杀死浏览器对于我的工作流程还是很糟糕的。我想要一个过程,如果可能的话,它不需要杀死任务。
下面是我正在使用的脚本:
set DriveL=E
set F=desktop.ini
set CatRoot=Media\Textures ^& 3D
set Cat=Nature Shaders
cd "%DriveL%:\%CatRoot%"
for /R %%I ("%Cat%\*.png") do @(
if exist %%~dpI%%~nI\ (
attrib -h -s -r "%~dp0%%~nI\%F%" 2>nul (
echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
echo Logo=%%~dpI%%~nxI
) > "%~dp0%%~nI\%F%"
attrib +s +h +r "%~dp0%%~nI\%F%"
)
)
pause
答案 0 :(得分:1)
您需要告诉所有资源管理器窗口从新修改的ini
文件进行更新。可通过Cscript API
set "DriveL=E:"
set "CatRoot=Media\Textures & 3D"
set "Cat=Nature Shaders"
cd /d "%DriveL%\%CatRoot%"
for /R %%I in ("%Cat%\*.png") do (
attrib -h -s -r "%temp%\desktop.ini" >nul
(echo [ViewState]
echo Mode=
echo Vid=
echo FolderType=Pictures
echo Logo=%%~fI
) > "%temp%\desktop.ini"
attrib +s +h +r "%temp%\desktop.ini"
(echo set shell = CreateObject^("Shell.Application"^)
echo set folder = shell.NameSpace^("%%~dpnI"^)
echo folder.MoveHere "%temp%\desktop.ini", 4+16+1024
)>"%temp%\folUpd.vbs"
cscript //nologo //b "%temp%\folUpd.vbs"
)
)
pause
您必须对此进行测试,然后再与我联系,因为我无法在我发布的设备中对此进行测试。