Python实现在目录右键弹出菜单中增删目录名称

内容介绍

因实际工作而产生的小需求。右击目录,在弹出菜单中点击,在目录名前增删“(完成)”字样。在繁忙时可减少些操作,还可多选批量更名。再次操作会删除“(完成)”字样。

27b03ebd78e74668952e594b376e1d6f.png

3db91f9e7c0444db8c3fbbf96494cd1b.png

工作中,目录名以01开头,往下排。故在开头两数字后增删“(完成)”字样。如果目录名不是以两数字开头,则直接在目录名增删“(完成)”字样。

存在一个未能解决的问题,当目录名包含空格时,取不到完整的目录名,sys.argv的第二个参数开始,每个参数包含了一小段空格分隔的内容……想重新组合字符串,又发现空格有可能不唯一,感觉无法还原连续空格的情况,直接搁置了,将有空格等特殊字符的情况进行弹窗,不继续运行。若有大神知道解决方案,请给个提示。

实现步骤:

第一步:注册表手动添加。

f1b3ba9ad8f646629f32b879385767d2.png

1cb00ba67ab44c85b179b9c8bda20f53.png

第二步: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博客icon-default.png?t=N7T8https://blog.51cto.com/u_16175450/7200965添加文件或文件夹右键菜单项_wx5fa9214ecb32b的技术博客_51CTO博客icon-default.png?t=N7T8https://blog.51cto.com/u_14997092/5762529

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月春生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值