Windowsのエクスプローラーで開いているパスを
コピー&ペーストして目的のディレクトリまで行く
と言うことが多々あります。
プログラムを書いている際も、
テスト的にフルパスをコードに直接書く事もよくあり、
この場合、Windowsの「\」文字区切りだとまずい場合がほとんどで、
「\\」と二重にするか、Unixでの「/」に書き換えたりする必要があり、
とにかくめんどくさい。
と言うことで、
Windowsのエクスプローラーでファイルを選択して右クリックして、
以下のようなパスをコピーするメニューを追加しました。
やることは2つ
1.メニューを追加
2.メニューが選択された際に実行されるプログラムを用意
1.メニューを追加
Windowsの右クリックメニューはレジストリで管理されているので
レジストリに追加する必要があります。
レジストリエディタで追加する場合は、
スタートメニューを起動し、「regedit」と打ち込んでレジストリエディタを起動。
「HKEY_CLASSES_ROOT\*\shell」まで行き
1.「shell」を選択して「右クリック->新規->キー」で、キーを追加(名前は何でもいい)
2.追加したキーの中にある「(規定)」と言うのをダブルクリックし、
出てきたダイアログの「値のデータ」に「UNCパスコピー」と入れてOK
これが右クリックした際に出てくるメニュー名になります。
3.1で追加したキーを右クリックし、1と同じ事をして新たにキーを追加。
ここで追加したキーの名前は「command」にしてください。
追加したキーの中にある「(規定)」と言うのをダブルクリックし、
出てきたダイアログの「値のデータ」に実行するコマンドを書きます。
今回、Pythonで書いたプログラムが実行されるようにしており、
「python "J:/python/winPathCopy.py" %1 UNC -dir」
と言うコマンドを入力。
「winPathCopy.py」は、パスをクリップボードにコピーするPythonScriptです。
「%1」には、エクスプローラーで選択しているファイルかディレクトリのフルパスがきます。
その後ろの、「UNC」や「-dir」は「winPathCopy.py」で用意したてきとうなフラグです。
■winPathCopy.pyの中身
# -*- coding: shift-jis -*- import sys import os.path #*********************************************************** ## clipboadへコピー #*********************************************************** def copyToClipboad( msStr ): import subprocess try: p = subprocess.Popen(['clip'], stdin=subprocess.PIPE) p.stdin.write(msStr ) p.stdin.close() retcode = p.wait() return True except OSError: return False except ValueError: return False return True if __name__=='__main__': if len(sys.argv)==3: sys.exit() file_path = sys.argv[1] mode = sys.argv[2] if mode=='UNIX': file_path = file_path.replace('\\','/') path = file_path if len(sys.argv)==4: if sys.argv[3]=='-dir': path = os.path.dirname(file_path) copyToClipboad(path)
■レジストリへの登録がめんどくさい
いちいち手でレジストリに登録するのも面倒なので
reg ファイルを用意しておくと、色んなマシンで実行して使えますと。
Windows Registry Editor Version 5.00 ;==============================================; ;UNCパスコピー作成 ;============================================== [HKEY_CLASSES_ROOT\*\shell\unc_path] [HKEY_CLASSES_ROOT\*\shell\unc_path] @="UNCパスコピー" [HKEY_CLASSES_ROOT\*\shell\unc_path\command] [HKEY_CLASSES_ROOT\*\shell\unc_path\command] @="python \"J:/python/winPathCopy.py\" %1 UNC -dir"
;============================================== ; UNCファイルパスコピー作成 ;============================================== [HKEY_CLASSES_ROOT\*\shell\unc_file_path] [HKEY_CLASSES_ROOT\*\shell\unc_file_path] @="UNCファイルパスコピー" [HKEY_CLASSES_ROOT\*\shell\unc_file_path\command] [HKEY_CLASSES_ROOT\*\shell\unc_file_path\command] @="python \"J:/python/winPathCopy.py\" %1 UNC"
;============================================== ; UNIXパスコピー作成 ;============================================== [HKEY_CLASSES_ROOT\*\shell\unix_path] [HKEY_CLASSES_ROOT\*\shell\unix_path] @="UNIXパスコピー" [HKEY_CLASSES_ROOT\*\shell\unix_path\command] [HKEY_CLASSES_ROOT\*\shell\unix_path\command] @="python \"J:/python/winPathCopy.py\" %1 UNIX -dir"
;============================================== ; UNIXファイルパスコピー作成 ;============================================== [HKEY_CLASSES_ROOT\*\shell\unix_file_path] [HKEY_CLASSES_ROOT\*\shell\unix_file_path] @="UNIXファイルパスコピー" [HKEY_CLASSES_ROOT\*\shell\unix_file_path\command] [HKEY_CLASSES_ROOT\*\shell\unix_file_path\command] @="python \"J:/python/winPathCopy.py\" %1 UNIX"
0 件のコメント:
コメントを投稿