我正在编写一个python脚本,一次一个文件或递归文件夹并将它们移动到一个新位置。该脚本采用一个参数(文件的当前路径)。我希望能够将资源管理器窗口中的所选项目用作变量。
我正在通过标记为“发送到服务器”的regedit文件创建上下文菜单。我目前已经创建了相应的regedit文件,并指向命令python.exe“path \ to \ python \ file.py
的位置长话短说,我想要一个上下文菜单,当右键单击文件时弹出“发送到服务器”,执行时使用所选文件或文件夹的路径作为我需要的唯一变量。到目前为止,我遇到了tkFileDialog(不是我想要的)ctypes和win32模块,但我无法弄清楚最后三个模块或它们是否会有所帮助
作为旁注。我已经创建了一个python脚本,可以在mac osx上执行此操作。使用macs'服务'功能会更容易。
答案 0 :(得分:3)
如果在用户的“SendTo”文件夹(%USERPROFILE%\SendTo
)中为此脚本(为Python 3编写)放置shortcut,则从右键单击中选择时会弹出一个目录对话框SendTo菜单。该对话框也适用于网络位置。脚本运行时,所选文件/文件夹的完整路径位于sys.argv[1]
。目前,它只在消息框中显示所选的目标路径。如果您不想要控制台,可以将扩展名更改为pyw。
import os, sys
from tkinter import Tk, filedialog
from tkinter.messagebox import showinfo
class Dialog:
def __init__(self, path):
self.path = path
self.dst_path = ''
self.root = root = Tk()
root.iconify()
root.after_idle(self.askdirectory)
root.mainloop()
def askdirectory(self):
self.dst_path = filedialog.askdirectory(initialdir=self.path)
showinfo('Selected Path', self.dst_path)
self.root.destroy()
if __name__ == '__main__':
if len(sys.argv) > 1:
path = sys.argv[1]
if os.path.isfile(path):
path = os.path.dirname(path)
dialog = Dialog(path)
#if dialog.dst_path: do_something(dialog.dst_path)