2011-07-22 8 views
2

ファイルを一度に1つずつ、または再帰的にフォルダに移動して新しい場所に移動するPythonスクリプトを作成しています。スクリプトは1つのパラメータ(ファイルの現在のパス)をとります。私は変数としてエクスプローラウィンドウで選択した項目を使用できるようにしたい。コンテキストメニューのPythonスクリプトで、選択したエクスプローラファイルまたはフォルダパスを変数として使用します。

「Send to Server」というラベルの付いたregeditファイルを使用してコンテキストメニューを作成しています。私は現在、適切なregeditファイルを作成し、コマンドの場所を指しています。python.exe "path \ to \ python \ file.py

短いストーリー、私は" Send to私が必要とするtkFileDialog(私が望むものではない)ctypesとwin32モジュールが出てきましたが、私はかなり理解できません最後の三つのモジュールアウトまたは、彼らはサイドノートとして

を助ける。私はマックOSXでこの正確なことをするPythonスクリプトを作成しました。Macの「サービス」の機能を持つはるかに簡単かどうか。

答えて

3

の場合yユーザーの "SendTo"フォルダ(%USERPROFILE%\SendTo)にshortcutをこのスクリプト(Python 3用に書かれたもの)に入れると、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) 
関連する問題