Board logo

标题: [文件操作] [已解决]BAT脚本修改指定文件夹的图标,文件夹图标不变 [打印本页]

作者: 881966    时间: 2018-10-8 09:30     标题: [已解决]BAT脚本修改指定文件夹的图标,文件夹图标不变

  1. @echo off
  2. set dir="%cd%"
  3. set ico="%cd%\586.ico"
  4. pause
  5. (echo [.ShellClassInfo]
  6. echo IconResource=%ico%)>"%dir%\desktop.ini"
  7. pause
  8. attrib +s +h "%dir%\desktop.ini"
  9. pause
  10. attrib +s "%cd%"
  11. pause
复制代码
desktop.ini文件可以创建,不管怎么刷新,文件夹图标不变。不知道那里问题
作者: flashercs    时间: 2018-10-8 10:12

attrib +r "%cd%"
作者: 881966    时间: 2018-10-8 11:07

谢谢,加了还是不行

@echo off
set dir="%cd%"
set ico="%cd%\586.ico"
pause
(echo [.ShellClassInfo]
echo IconResource=%ico%)>"%dir%\desktop.ini"
pause
attrib +s +h "%dir%\desktop.ini"
pause
attrib +s +r "%cd%"
pause
作者: flashercs    时间: 2018-10-8 11:30

.ico的问题,不合标准。
作者: 881966    时间: 2018-10-8 11:41

谢谢
.ico是在shell32.dll提取出来的
作者: 881966    时间: 2018-10-8 11:49

你好,图标需要什么标准?换了好多不行
作者: xczxczxcz    时间: 2018-10-8 17:34

图标要指定是图包里的哪一张图片。如:586.ico,0  为xxx.ico的第一张。
这个问题好前不久有提过。
作者: 881966    时间: 2018-10-8 17:38

我是把图标提取出来单独用的,不是在dll里边,谢谢
作者: xczxczxcz    时间: 2018-10-8 19:29

回复 8# 881966

提出来也要加。
以前写过一个,翻出来帖上:XP WIN7 未试。WIN8立现,WIN10要刷新。把图标改成 #.ico
  1. @echo off
  2. set/p=先把 #.ico 放入文件夹内并拖文件夹到批上 <nul
  3. (pause>nul
  4. (for /d %%a in (%1) do (
  5. echo [.ShellClassInfo]
  6. echo IconResource=..\%%~nxa\#.ico,0
  7. echo [ViewState]
  8. echo Mode=
  9. echo Vid=
  10. echo FolderType=Pictures
  11. ))>"%~1\desktop.ini"
  12. pushd %1
  13. attrib +s +h desktop.ini
  14. attrib +s +h #.ico
  15. popd
  16. attrib +r %1
  17. ie4uinit -show
  18. )
  19. echo 延时60秒... 针对WIN10系统,文件夹嵌套,延时刷新
  20. timeout /t 60 /nobreak
  21. md "%~1\请删除我"
  22. rd /q "%~1\请删除我"
  23. ie4uinit -show
复制代码

作者: 881966    时间: 2018-10-8 19:44

谢谢,我试试看
作者: cutebe    时间: 2018-10-8 23:15

  1. @ECHO OFF
  2. SET "MUSIC_DIR=D:\新建文件夹"
  3. CALL :DIRICON "%MUSIC_DIR%"
  4. PAUSE
  5. GOTO :EOF
  6. ::结束
  7. :DIRICON DIR
  8. ATTRIB -H -S -R "%~1\DESKTOP.INI"
  9. (
  10. ECHO,[.ShellClassInfo]
  11. ECHO,IconFile=%%SystemRoot%%\system32\SHELL32.dll
  12. ECHO,IconIndex=-237%_这是音乐文件夹图标_%
  13. )>"%~1\DESKTOP.INI"
  14. ATTRIB +H +S "%~1\DESKTOP.INI"
  15. ::ATTRIB -R %1
  16. ATTRIB +R %1
复制代码
XP测试立马生效,DLL文件中的图标不需要提取出来,直接给出序号就可。(如例子代码中的序号是-237)
作者: /zhqsystem/zhq    时间: 2018-10-8 23:56

自己把那俩变量显示出来是什么鬼
作者: 881966    时间: 2018-10-9 10:58

11楼兄弟,谢谢,我试试看
作者: 881966    时间: 2018-10-9 10:59

12楼兄弟,那俩变量就是当前路径,测试用
作者: 881966    时间: 2018-10-9 11:10

回复 11# cutebe


    想建立透明文件夹,把几个透明图标提取了
作者: 窄口牛    时间: 2018-10-9 12:15

牛逼,透明文件夹
作者: 881966    时间: 2018-10-9 19:04

回复 9# xczxczxcz


    win7系统,试了窗口一闪,文件夹没反应。
作者: 881966    时间: 2018-10-9 19:26

回复 11# cutebe


    谢谢,测试可以,需要多刷新几次。
作者: xczxczxcz    时间: 2018-10-9 20:08

回复 17# 881966

去虚拟机中的 XP系统试了下,在XP下确实不行,发现是参数写法不一样。可能 WIN7 和 XP 差不多。

下面这个新的 测试 XP WIN10都正常。 XP系统把延时部分删除。
  1. @echo off
  2. set/p=先把 #.ico 放入文件夹内并拖入文件夹到批上 <nul
  3. (pause>nul
  4. (for /d %%a in (%1) do (
  5. echo [.ShellClassInfo]
  6. echo IconIndex=0
  7. echo IconFile=..\%%~nxa\#.ico
  8. ))>"%~1\desktop.ini"
  9. pushd %1
  10. attrib +s +h desktop.ini
  11. attrib +s +h #.ico
  12. popd
  13. attrib +r %1
  14. ie4uinit -show
  15. )
  16. echo 延时60秒... 针对WIN10系统,文件夹嵌套,延时刷新
  17. timeout /t 60 /nobreak
  18. md "%~1\请删除我"
  19. rd /q "%~1\请删除我"
  20. ie4uinit -show
复制代码

作者: 881966    时间: 2018-10-12 19:51

回复 19# xczxczxcz


    谢谢,我测试看看
作者: 881966    时间: 2018-10-13 20:03

回复 19# xczxczxcz


    谢谢,win7系统,测试结果:先把 #.ico 放入文件夹内并拖入文件夹到批上,之后没反应。
作者: xczxczxcz    时间: 2018-10-13 20:31

本帖最后由 xczxczxcz 于 2018-10-13 20:33 编辑

回复 21# 881966


    立竿见影 好不好。 是不是你操作不当。也可能是那名话误导了你的操作。

正确姿式:把文体夹拖到批处理程序上。不是拖到窗口中。拖到批上后会弹出一个窗口,这个窗口是提示信息。直接回车就可以了。

在虚拟机装了 XP  WIN7  WIN8  测试都通过。  XP 与 WIN7 相同。 WIN8 新写法,WIN10 可用XP的写法,也可用WIN8的写法。 XP与7 需要把图索引号单独写,WIN8图号要写在图标后面。WIN10 二者兼容。 WIN8 WIN10 都要延时约1分钟。

XP 7 把第 16行及后面的 延时部分删除。因不需要延时。
作者: 881966    时间: 2018-10-21 18:44

回复 22# xczxczxcz


    谢谢你,可能是我的系统问题,等换系统再试试,谢谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2