如何在Windows文件资源管理器地址栏添加可获取当前路径的自定义命令
解决资源管理器地址栏运行自定义命令并获取当前文件夹路径的问题
问题根源
你之前把exe直接放进C:\Windows的方式,会导致程序的当前工作目录被设为exe所在的系统文件夹,而不是资源管理器打开的目标文件夹,所以os.getcwd()或pwd返回的是exe的位置,而非你需要的路径。
可行解决方案
方法1:用批处理脚本传递当前路径
- 新建一个批处理文件(比如命名为
myapp.bat),内容如下:
@echo off :: 替换成你的exe实际路径,%cd%代表当前资源管理器打开的文件夹 start "" "S:\Coding\Python\file-sorter\New folder\dist\your_app.exe" "%cd%"
- 把这个
.bat文件放到C:\Windows或者其他在系统Path环境变量里的目录,这样在地址栏输入myapp就能触发运行。 - 修改你的Python代码,读取命令行参数获取当前路径:
import sys import os # 优先取批处理传递的路径,没有则用当前工作目录 current_folder = sys.argv[1] if len(sys.argv) >= 2 else os.getcwd() with open("S:\\Coding\\Python\\file-sorter\\New folder\\dist\\log.txt", "w") as o: o.write(current_folder)
方法2:修改快捷方式属性传递路径
- 右键你的exe文件,创建快捷方式。
- 右键快捷方式,打开「属性」:
- 在「目标」栏的exe路径末尾,添加空格和
%V(Windows专门用来传递当前文件夹路径的变量),比如:"S:\Coding\Python\file-sorter\New folder\dist\your_app.exe" %V - 把快捷方式重命名为你想要的命令名(比如
myapp)。
- 在「目标」栏的exe路径末尾,添加空格和
- 将这个快捷方式放到
C:\Windows或Path目录下,地址栏输入命令名即可运行。 - 同样用上面的Python代码读取
sys.argv[1]获取当前文件夹路径。
方法3:直接用Python脚本(适合开发阶段)
如果你的Python已经添加到系统Path,可以直接写.py脚本,地址栏输入py your_script.py即可运行,此时脚本的os.getcwd()会直接返回资源管理器的当前文件夹路径(因为py命令会继承当前路径)。
内容的提问来源于stack exchange,提问作者Sohan Gundoju
相关产品推荐
相关产品推荐

