为了使用方便,很多文件夹存放了很多照片,通过文件名很难记住相关文件夹内容,因此利用python批量修改文件夹图标为该文件夹内第一张照片,方便记忆和管理。
处理前:
处理后:
前期准备:
- python运行环境及基本语法,安装第三方库
- 下载Quick_Any2Ico【下载链接】并与脚本放在同一目录
代码主要分为三块:
- 对目录进行遍历,获取子文件夹下的图片文件并生成图标文件 .ico。
- 生成并编辑子文件desktop.ini,添加系统属性
- 对子文件夹设置只读/系统属性
使用:
- 双击运行.py
- 输入目标路径
import os,subprocess,codecs
import win32con,win32apiini_str = '''
[.ShellClassInfo]\r\n
IconResource=icon.ico,0\r\n
[ViewState]\r\n
Mode=\r\n
Vid=\r\n
FolderType=Pictures\r\n
'''
Any2Ico_path = 'Quick_Any2Ico.exe'
ext = ["jpg", "jpeg", "png", "gif","icns", "ico"]while True:root=input('请输入目录(q/Q=Quit):')if root.upper()=='Q':breakroot=root.strip('"').strip("'")print('--->',root)for parent,dirnames,filenames in os.walk(root):if not dirnames:print(parent) first = min(p for p in os.listdir(parent) if p.split(".")[-1].lower() in ext)cmd = '"{0}" "-img={1}\{2}" "-icon={1}\icon.ico"'.format(Any2Ico_path,parent,first)subprocess.run(cmd)win32api.SetFileAttributes('{0}/icon.ico'.format(parent), win32con.FILE_ATTRIBUTE_HIDDEN)desktop_ini = '{0}/desktop.ini'.format(parent)if os.path.exists(desktop_ini):os.remove(desktop_ini)f=codecs.open(desktop_ini,'w','utf-8')f.write(ini_str)f.close()win32api.SetFileAttributes(desktop_ini, win32con.FILE_ATTRIBUTE_HIDDEN + win32con.FILE_ATTRIBUTE_SYSTEM)win32api.SetFileAttributes(parent, win32con.FILE_ATTRIBUTE_READONLY)
参考资料:
https://docs.microsoft.com/en-us/windows/desktop/shell/how-to-customize-folders-with-desktop-ini