批处理脚本,无需重新启动即可更改和刷新文件夹图片

时间:2019-04-21 06:05:20

标签: batch-file cmd windows-8.1

我写了一个批处理脚本来细读文件夹中的所有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

1 个答案:

答案 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

您必须对此进行测试,然后再与我联系,因为我无法在我发布的设备中对此进行测试。