Windows:右クリックメニューで日本語ファイル名を修正する→pythonワンライナーは難しい

Windows:右クリックメニューで日本語ファイル名を修正する→pythonワンライナーは難しい

いやなファイル名

プログラマを殺すには、日本語のファイル名を渡せばいい

レオナルド・ダ・ヴィンチ

雑にファイルを扱っていたり、適当にコピーするとプログラムする立場からすると困ったファイル名ができることがある。まじめにプログラムで扱えば別に問題ないのだが、雑なプログラムだと誤動作する。おや、つまり両方とも自分が雑なのがいけないのか。いや、プログラム書く人ならわかるだろう。

  • 日本語が含まれている
  • スペースが含まれている
  • 必要以上に長い

というようなファイル名は直していきたい。そんなときに簡単に修正できるものを作った。

いや、そんなもの世の中を探せばありそうだが、他にもこういう系のプログラム拡張は作っていくのでいいのだ。

使い方

  1. shell:sendto というフォルダをエクスプローラで開き、ここからコピペ した内容のbatファイルを保存する。
  2. いやな名前のファイルを選択して右クリックで送るメニューを開き、先ほどのbatファイルを選択する。
  3. enjoy!
これが
こうなる

コードの部分、pythonコマンドが ”py” となっているが、環境によっては
“python” とか ”C:\Users\hal3i\AppData\Local\Microsoft\WindowsApps\python.exe” とか ”C:\Users\ユーザー名\AppData\Local\Microsoft\WindowsApps\python.exe” かもしれない。適当に書き換えてほしい。python3ならだいたい動くと思う。おっと、もちろんpythonの事前インストールが必要だ。

使い方はこんな感じだが、作るのにはちょっと苦労した。

基本のpythonスクリプト

pythonであれば、こんなコードで直せる。やっている事は日本語とかスペースがあったら置換して保存しなおしているだけ。そしてこれを簡単に呼び出せるようにWindowsのエクスプローラの 送る に追加したい。

直接pythonコードを実行できる設定とかにもできそうだが、いろいろな環境で動くようにbatファイル化する。またファイルを2つ用意したくない(pythonファイルをパスが通った場所とかにできれば置きたくない、、まあこれはそのうちやるが)のでbatファイル内にpythonコードも書いてしまいたい。

batファイルは基本的に複数行に渡ったコマンドが書けない。pythonコードも1行にまとめなくてはいけない。という事で

python -c "実行したいコード"

これをbatファイルに書けば終わると思っていた自分がいました。ここで結構はまった。

pythonワンライナーは難しい

難しい理由は以下がわかりやすい。改行とインデントがプログラムの構文になっているpythonはワンライナーと相性が悪いようだ。

https://qiita.com/gyu-don/items/1c200d4e9fc6e22d3c7b

がんばって書いたがifとかforとかをきれいに盛り込むのが難しい。でも置換する文字列部分は配列でまとめて設定したい。いろいろ考えた結果以下のようなコードになった。

exec命令で文字列としてのpythonコードを無理やり実行してしまった。(eval命令だと-cオプションと同じく1行にコードをまとめなくてはいけなくなる。)。クオーテーションのエスケープや改行コード、TABコードの書き方を¥n、¥tとしないといけないが、ある程度以上の複雑さを持つコードならワンライナーを頑張って書くより優しい。

という事で右クリック拡張系のコードをこれからいくつか作っていく予定。

そういえば、自分マック派なんだわ。

この記事を参照している記事

コメントを残す

Previous post Houdini:5角形以上のプリムUV空間を視覚化してみた
Next post Houdiniチュート動画:メッシュを短冊切りにする