内容介绍
因实际工作而产生的小需求。右击目录,在弹出菜单中点击,在目录名前增删“(完成)”字样。在繁忙时可减少些操作,还可多选批量更名。再次操作会删除“(完成)”字样。
工作中,目录名以01开头,往下排。故在开头两数字后增删“(完成)”字样。如果目录名不是以两数字开头,则直接在目录名增删“(完成)”字样。
存在一个未能解决的问题,当目录名包含空格时,取不到完整的目录名,sys.argv的第二个参数开始,每个参数包含了一小段空格分隔的内容……想重新组合字符串,又发现空格有可能不唯一,感觉无法还原连续空格的情况,直接搁置了,将有空格等特殊字符的情况进行弹窗,不继续运行。若有大神知道解决方案,请给个提示。
实现步骤:
第一步:注册表手动添加。
第二步:Pycharm中写个py文件。
import os
import sys
import tkinter as tk
from tkinter import messagebox
def show_file_name():
'''
文件或文件夹右键快捷菜单项,将文件名或目录名增加或删除"(完成)"字样。
2023-12-27
:return:
'''
if len(sys.argv) > 2:
messagebox.showinfo("名称中有空格", "名称中有空格,删除空格后再试或手动添加。")
return
file_path = sys.argv[1] # 提取文件路径
file_name = os.path.basename(file_path) # 获取文件名或目录名
dirname = os.path.dirname(file_path) # 去掉文件名,返回目录
# 如果目录名中已存在“(完成)”字样,则删除并终止程序。
if file_name.count("(完成)"):
new_file_name = file_name.replace("(完成)", "")
new_path = dirname + "\\" + new_file_name
try:
os.rename(file_path, new_path)
except:
messagebox.showinfo("文件被占用", "文件在某处被打开,请关闭后再试。")
return
'''
开头两个数字file_name[:2]
除开头两个数字之外file_name[2:]
'''
if file_name[:2].isdigit(): # 如果目录名开头两个字符是数字,则在数字后添加“(完成)”。
new_path = dirname + "\\" + file_name[:2] + "(完成)" + file_name[2:]
else: # 否则直接在开头添加。
new_path = dirname + "\\" + "(完成)" + file_name
# messagebox.showinfo("new_path", new_path)
try:
os.rename(file_path, new_path)
except:
messagebox.showinfo("文件被占用", "文件在某处被打开,请关闭后再试。")
show_file_name()
第三步:打包成独立运行exe
dos窗口定位到项目所在位置:D:\python_learn\right_click_menu
pyinstaller -F -w -i res/mouse.ico function.py
将生成的exe路径与注册表中
计算机\HKEY_CLASSES_ROOT\Directory\shell\renameDir\command中的路径一致
完成!
———————————————————————————————————————————
注:文件名也可增删。只在注册表内有不同。
文件右键菜单项的添加 计算机\HKEY_CLASSES_ROOT\*\shell\MyMenu MyMenu是自定义目录名,最好不用中文
———————————————————————————————————————————
附目录名的注册表文字说明:
目录右键菜单项的添加 计算机\HKEY_CLASSES_ROOT\Directory\shell\renameDir renameDir是自定义目录名,最好不用中文 该项下默认的数据改为右键菜单项里想要显示的文本 新建icon字符串值,数据为某exe路径,用来显示菜单图标 计算机\HKEY_CLASSES_ROOT\Directory\shell\renameDir\command 新建如上command项, 默认数据为: 调试期用==> D:\own\dev\Python\Python3.11.5\pythonw.exe D:\python_learn\right_click_menu\function.py %1 生成后用==> C:\Users\xcxc\dist\function.exe %1
学习内容:
python执行右键菜单的代码_mob649e81586edc的技术博客_51CTO博客https://blog.51cto.com/u_16175450/7200965添加文件或文件夹右键菜单项_wx5fa9214ecb32b的技术博客_51CTO博客
https://blog.51cto.com/u_14997092/5762529