Python批量自定义文件夹图标

本文介绍了一种使用Python脚本批量将文件夹内的首张图片设为文件夹图标的方法,以此来提高文件管理效率。该脚本适用于Windows系统,通过自动生成.ico文件和配置desktop.ini文件实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了使用方便,很多文件夹存放了很多照片,通过文件名很难记住相关文件夹内容,因此利用python批量修改文件夹图标为该文件夹内第一张照片,方便记忆和管理。

处理前:

处理后:

前期准备:

  1. python运行环境及基本语法,安装第三方库
  2. 下载Quick_Any2Ico【下载链接】并与脚本放在同一目录

代码主要分为三块:

  1. 对目录进行遍历,获取子文件夹下的图片文件并生成图标文件 .ico。
  2. 生成并编辑子文件desktop.ini,添加系统属性
  3. 对子文件夹设置只读/系统属性

使用:

  1. 双击运行.py
  2. 输入目标路径
import os,subprocess,codecs
import win32con,win32api
 
 
ini_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':
		break
	root=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

 

 

这是一个方便管理windows文件系统的辅助工具,能很轻松的实现windows文件夹图标的更改,jar包中只预置了30来种图标,不过在resource文件夹里面有我不辞辛劳制作的大量可用图标可以选用(千万注意该jar包所在的路径不能包含空格和中文,最好是直接放在磁盘根目录下,这样能保证不出现读不到资源文件的问题!),使用起来很简单,简单的将文件夹拖拽到GUI界面的JTextArea中去就行了,然后再在工具栏点一下自己喜欢的图标,就能完成更改了~如果是桌面的文件夹,第1次修改会自动呈现,第2次修改则要刷新一下桌面,至于从资源管理其中拖拽的话,每次都会自动刷新图标~如何修改工具栏可用的图标呢?点击ChangeIcon.jar包运行之后,会自动生成LogsContainer和IconsContainer两个文件夹,前者用来存放修改的记录(如果修改某文件图标又将其恢复成默认之后,该文件路径不会出现在记录中,记录文件每次开启和关闭改程序的时候生成一次),后者用来存放工具栏要拿来呈现的图标(由于工具栏条目就20个,因此会按照顺序取前19个图标,最后一个是留给恢复默认使用的,如果要配置的话把“windowsXP图标”中自己喜欢的图标粘贴进该文件夹即可,不过要保证图标总数不要超过19个,否则可能被漏掉而无法呈现在工具栏上)。如果有一天觉得电脑里面文件夹图标被改的花花绿绿的刺眼的话,也可以依据LogsContainer中的记录文件来进行“大还原”,点菜单栏帮助选“从TXT导入”,弹出对话框选中要还原那一次开关闭改程序所作的全部修改的记录文件,可以看到JTextArea中将呈现出所有被修改过图标文件夹的路径,点击工具栏的“恢复”即可!当然由于时间有限,有些功能还是未能考虑全面,比如说一次性将所有“记录文件”导入到JtextArea,一次性将自使用改程序以来所作的全部修改进行还原~另注:由于jar文件中资源文件的路径不同于在 Eclipse 中资源文件,因此虽然这个项目导出的jar包能直接运行,但是运行eclipse项目中的主方法却是错误的,这个项目耗时我1日半,所幸解决了以前一些悬而未决的问题,深感欣慰,在此公布出来,希望大家能使用愉快!-- Bruce Yang
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值