You need to enable JavaScript to run this app. Windows右键菜单运行Python脚本自动获取当前文件夹路径
优惠活动
大模型
产品
解决方案
定价
更多

Windows右键菜单运行Python脚本自动获取当前文件夹路径

右键启动Python脚本自动获取目标文件夹路径的实现方法

修改注册表配置,传递当前右键路径

现有配置下系统没有把你右键所在的文件夹路径传给脚本,需要补上系统内置的路径占位符:

  • 现有注册表位置:Computer\HKEY_CLASSES_ROOT\Directory\Background\shell
  • 原有数值数据:C:\Python\Python372\python.exe "c:\temp\example.py"
  • 修改后的数值数据:C:\Python\Python372\python.exe "c:\temp\example.py" "%V"

这里的%V是Windows资源管理器的内置占位符,调用右键菜单时会自动替换为你当前右键所在的文件夹绝对路径,不需要手动写死。如果后续需要支持“选中某个文件夹时触发整理”,可以在Computer\HKEY_CLASSES_ROOT\Directory\shell下做同样的配置,%V会自动替换为你选中的文件夹路径。

调整Python脚本,自动接收传入的路径参数

原脚本存在两个核心问题:一是把脚本自身的存放路径当成了要整理的目标路径,二是shutil.move行存在语法缺失。修改后的完整可运行脚本如下:

import os
import shutil
import sys
import glob

# 接收注册表中%V传递的当前右键所在文件夹路径
TARGET_PATH = sys.argv[1]
ext_filter = ['jpg', 'jpeg', 'png', 'bmp']
IMAGES = []

# 自动创建图片存放目录,避免首次运行时因目录不存在报错
IMAGE_SAVE_DIR = os.path.join(TARGET_PATH, "IMAGES")
os.makedirs(IMAGE_SAVE_DIR, exist_ok=True)

for root, _, _ in os.walk(TARGET_PATH):
    for ext in ext_filter:
        for img_path in glob.glob(os.path.join(root, f"*.{ext}")):
            IMAGES.append(img_path)

for img in IMAGES:
    # 跳过已经存放在IMAGES目录内的文件,避免重复处理
    if os.path.dirname(img) == IMAGE_SAVE_DIR:
        continue
    shutil.move(img, os.path.join(IMAGE_SAVE_DIR, os.path.basename(img)))

脚本调整说明

  • 完全去掉硬编码的目标路径,通过Python内置的sys.argv读取启动时传入的参数,也就是注册表传过来的当前文件夹路径
  • 修复了原脚本中shutil.move行缺失字符串连接符的语法错误,原写法直接运行会触发语法报错
  • 用os.path方法拼接路径,替代手动写反斜杠的方式,避免不同场景下的路径拼接错误
  • 提前创建目标存放目录,减少不必要的运行报错
  • 增加逻辑过滤,避免脚本扫描时把已经移到IMAGES目录的文件重复处理

常见排查点

  • 如果运行时提示list index out of range报错,说明注册表的参数传递没生效,回去检查启动命令末尾是不是正确加上了"%V",注意占位符要在引号外面
  • 如果移动文件时报“文件已存在”的错误,可以根据自身需求在shutil.move逻辑里增加重命名判断,避免同名文件被覆盖
  • 不需要额外修改脚本的工作目录,因为系统传进来的是完整绝对路径,脚本不依赖当前运行目录的状态

内容的提问来源于stack exchange,提问作者George Boholteanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 09:06:05