如何在Windows资源管理器中直接使用Python脚本打开多个文件
实现Windows右键选中多文件调用Python脚本的方案
完全可以实现,核心逻辑是Windows资源管理器选中多个文件后通过「打开方式」启动程序时,会把所有选中文件的绝对路径作为参数传递给目标程序,Python可直接通过sys.argv读取这些路径做自定义处理,以下是完整步骤:
第一步:编写Python处理脚本
以你提到的合并PDF场景为例,先安装依赖库:pip install pypdf2
编写脚本(示例命名为pdf_merge.py,可自行修改处理逻辑适配其他需求):
import sys import os from PyPDF2 import PdfMerger # 读取所有传入的文件路径,sys.argv[0]是脚本自身路径,从下标1开始是选中的文件路径 input_files = sys.argv[1:] if not input_files: # 没有选中文件直接退出 sys.exit() # 初始化PDF合并器 merger = PdfMerger() for pdf_path in input_files: # 只处理后缀为pdf的文件,避免误传其他格式 if os.path.splitext(pdf_path)[1].lower() == '.pdf': merger.append(pdf_path) # 合并后的文件保存在第一个选中PDF所在的文件夹,命名为merged_result.pdf output_path = os.path.join(os.path.dirname(input_files[0]), "merged_result.pdf") merger.write(output_path) merger.close()
第二步:配置右键打开关联
这里要注意一个常见坑:如果直接把打开方式关联到.py后缀的脚本,Windows默认只会传递第一个选中的文件路径,需要用以下两种方式之一解决:
方式1:批处理中转(无需打包,适合本地有Python环境的场景)
新建一个文本文件,修改后缀为.bat(示例命名为run_pdf_merge.bat),写入以下内容,注意替换成你自己的Python脚本实际路径:
@echo off python "C:\your\path\to\pdf_merge.py" %*
右键任意PDF文件 → 「打开方式」→ 「选择其他应用」→ 下拉到最底部选「在此电脑上查找其他应用」→ 选中刚才创建的.bat文件,勾选「始终使用此应用打开.pdf文件」即可。
方式2:打包成EXE(无环境依赖,传播更方便)
如果需要在没有Python环境的电脑上使用,可以把脚本打包成单EXE文件:
- 先安装打包工具:
pip install pyinstaller - 执行打包命令:
pyinstaller -F -w pdf_merge.py-F参数表示打包成单个独立EXE文件-w参数表示运行时不弹出黑控制台窗口,不需要看运行日志可以加,调试阶段建议去掉
- 打包完成后,EXE文件会生成在脚本同级的
dist文件夹内,直接把打开方式关联到这个EXE即可,不存在参数传递限制。
第三步:效果验证
选中多个目标PDF文件,右键选择你配置的关联程序,等待几秒即可在第一个PDF所在的文件夹看到合并后的结果文件。
内容的提问来源于stack exchange,提问作者serc
相关产品推荐
相关产品推荐

