「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。

Pythonコードをレジストリから呼び出す

筆者が企業の発表会に出席するときは、OneDrive for Businessフォルダーに企業名や日付を持つフォルダーを作成し、その中にテキストファイルや撮影した写真などを格納する。そこで常に発生する作業が、テキストファイルの新規作成だ。

ライターや記者に特有のことかもしれないが、記事(下書きやメモ書きを含む)をしたためるテキストファイルは、人によって独自のスタイルになっていたりする。必ず記載する要素、例えば日付や見出しなどがあるものだ。

こうしたテキストファイルの新規作成について、記者仲間と「毎回けっこう手間だよね」と話題になったことが、今回の出発点。いつも同じフォーマットのテキストファイルを一発で作れると、手間が省けて精神的にもよさそうだ(ひな型となるテキストファイルを用意しておき、それをコピーして使うほうが楽という話もある)。

そこであれこれと試行錯誤してみたところ、レジストリの設定だけでは不可能で、プログラミング言語を使う方法にたどり着いた。今回はPythonを使っているが、ファイル操作機能を持ち、Windows 10上で動作する言語であれば、Windows PowerShellでもPerlでもかまわない。

  • Windows 10 ミニTips

    ダウンロードページからWindows用Pythonをダウンロードし、セットアッププログラムを起動。コマンドラインから使う場合は「Add Pyhon 3.8 to PATH」にチェックを入れてから「Install Now」をクリック/タップする

  • Windows 10 ミニTips

    インストール完了後は「Disable path length limit」→「Close」ボタンと順にクリック/タップする

上記の手順は、Windows 10 バージョン1607以降で変更された拡張パスを有効にするため、レジストリの「HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control¥FileSystem」キーにDWORD値「LongPathsEnabled」を作成し、データを「1」にセットしている。

次はPythonで簡単なコードを書く。以下のコードリストの3行目はカレントフォルダーを取得し、4行目でファイル名を付与したパスを変数「filename」に格納。6~9行目は新規作成用にテキストファイルを作り、10~11行目はエラー処理となる。なお、8行目はテキストファイルに書き込む内容なので、変更しながら試してみるとよいだろう。

  • Windows 10 ミニTips

    任意のテキストエディターで下記の内容を「NewTextFile.py」として作成し、OneDriveフォルダー内のドキュメントフォルダーに保存する

import os
path = os.getcwd()
filename = str(path) + '¥¥0memo.txt'
try:
with open(filename, mode='x') as f:
f.write('■¥n□Memo¥n')
f.close()
except FileExistsError:
pass

続いて、コードを呼び出すレジストリエントリーを作成。今回は、管理者権限を持つコマンドプロンプトから「reg」コマンドを使うことにした。環境変数「LOCALAPPDATA」や「OneDriveConsumer」を使いたかったが、ダブルクォーテーションでデータを囲むと展開されないため、3行目は読者諸氏の環境に合わせてパスを変更してほしい。

  • Windows 10 ミニTips

    「Win」+「R」キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「cmdt」と入力して、「Ctrl」+「Shift」キーを押しながら「OK」ボタンをクリック/タップする

  • Windows 10 ミニTips

    コマンドプロンプトに以下の内容をコピー&ペーストする

reg add HKCR¥Directory¥Background¥shell¥NewTextFile /ve /d "テキストファイルを作成する(&N)" /f
reg add HKCR¥Directory¥Background¥shell¥NewTextFile /t REG\_SZ /v "Extended" /f
reg add HKCR¥Directory¥Background¥shell¥NewTextFile¥command /ve /d "C:¥Users¥kaz¥AppData¥Local¥Programs¥Python¥Python38¥python.exe C:¥Users¥kaz¥OneDrive¥Documents¥NewTextFile.py" /f

以上で作業は完了。任意のフォルダー(背景)でマウスを右クリックし、コンテキストメニューからコマンドを呼び出せば、Pythonがコードを実行してテキストファイルを新規作成する。

  • Windows 10 ミニTips

    任意のフォルダーで「Shift」キーを押しながら右クリック/長押しし、「テキストファイルを作成する」をクリック/タップすると、「0memo.txt」ファイルが作成される

  • Windows 10 ミニTips

    こちらは生成したテキストファイルの内容