Batch file 无需重新启动即可更改和刷新文件夹图片的批处理脚本
我编写了一个批处理脚本来仔细阅读文件夹中的所有png文件,并在有同名文件夹时将它们指定为文件夹图片 在将信息写入Batch file 无需重新启动即可更改和刷新文件夹图片的批处理脚本,batch-file,cmd,windows-8.1,Batch File,Cmd,Windows 8.1,我编写了一个批处理脚本来仔细阅读文件夹中的所有png文件,并在有同名文件夹时将它们指定为文件夹图片 在将信息写入desktop.ini文件时,该脚本可以完美地工作。只有一个小问题:它不起作用。我无法让文件夹读取修改后的desktop.ini文件并更新其图片 我正在使用Windows8.1。我怀疑我需要删除某种缓存,但我不知道具体是哪种缓存以及如何删除。据我所知,更改文件夹图标时,需要杀死explorer.exe,删除iconcache文件并重新启动explorer.exe 我不知道iconcac
desktop.ini
文件时,该脚本可以完美地工作。只有一个小问题:它不起作用。我无法让文件夹读取修改后的desktop.ini
文件并更新其图片
我正在使用Windows8.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
您需要通知所有资源管理器窗口从新修改的
ini
文件更新。这可以通过Cscript获得
您必须对此进行测试并回复我,因为我无法在我发布的设备上进行测试。可能重复@LotPings。不幸的是,该问题的公认答案没有提供详细的解决方案,内容指向一个具有不同版本Windows的折旧功能的页面,这在Windows 8及更高版本中不起作用。不幸的是,它不起作用。考虑到这是我第一次使用它,我将阅读一些关于这个API的文章,看看我是否能理解它。观察结果:
Shell.NameSpace
应该指向%%~dpI%%~nI
,所以我在尝试中改变了这一点。在您的示例中,它指向“Cat”文件夹(自然着色器)。不,我们正在写入temp,然后复制回path。所以不要改变路径。明天我会带着笔记本电脑回家做一个测试。首先,谢谢!是的,它正在复制回父文件夹路径,而不是我正在更改的子文件夹。因此,我不确定如果不在子文件夹中,它会如何影响子文件夹,并且它会在最终目标中不断覆盖自己。示例:假设我有自然着色器/Stone 1.png
和自然着色器/Stone 2.png
;另外还有文件夹Nature Shaders/Stone 1/
和Nature Shaders/Stone 2/
,我正在将其中的图片更改为父文件夹中相同命名的png文件desktop.ini
将被写入Nature Shaders/
两次,而不是写入各自的子文件夹。注意:要使其正常工作,您还需要删除^escaping&或包装设置变量或cd目标的引号。好的,请立即尝试。我不知道您想影响与png
同名的文件夹。。这让我很困惑。对于集合变量的换行双引号。。它们必须存在,不要删除它们,因为它们有助于消除可能不需要的空白。我没有注意到你有转义插入符号,所以我把它去掉了。这里的主要变化是shell.NameSpace^(“%%~dpnI”^)
我刚刚为name添加了n
,因此它将完成文件夹路径Nature Shaders\Stone 1
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