0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いい加減 `~` がうるさいので Windows でもドットファイルを隠すスクリプトを書いた

Posted at

Linux なんかではファイル名の最初がピリオドのファイル、いわゆるドットファイルは隠しファイル扱いとなり、通常の設定ではファイルエクスプローラに表示されなかったりします。

これに対し Windows の隠しファイルはファイル・ディレクトリのメタデータである「属性」として表現されており、ファイル名の先頭がピリオドだとしてもそれ自体が隠しファイルを作ってはくれません。

結果なにが起こるかというと、クロスプラットフォームなアプリケーションがドットファイルだけど隠しファイル属性を持っていないファイルをホームディレクトリ(C:\Users\<username>)に作りまくって大変なことになります。

ドットファイルでいっぱいのホームディレクトリ

これにうんざりしていたのでちゃちゃっと Python でスクリプトを組みました。

使い方

標準ライブラリしか使っていないので Python が導入されていればおおむね使えるはずです。ドットファイルを隠しにしたいフォルダのパスを hoge として、

python -m dothider hoge

とすることで hoge に存在しているドットファイルすべてが隠しファイルになります。

ドットファイルだったファイルやフォルダが見えなくなっている

隠しファイルを表示する設定にするとこのようになり、ちゃんと存在していることがわかります。

隠しファイルが半透明で表示されている。元から隠しファイルだったものに加えドットファイルが半透明になっている

もし戻したいと思ったときも簡単で、

python -m dothider -d hoge

で OK です。ちなみにもとから隠しファイルだったファイルやフォルダには影響ありません。

仕組み

と大層にセクションを設けていますが大したことはしていません。

隠しファイル属性の取得・設定は attrib コマンドをサブプロセス実行するという力技で解決。しかしこんなこと生で処理中に書きたくなかったので pathlib.WindowsPath クラスを継承したクラスを作成してこれらをメソッドとして持たせて隠蔽しています。

-d オプションでの復帰については、隠しファイル属性の設定の際にそのフルパスをテキストファイルに書き出し、あとで利用しているだけです。このテキストファイル自体もドットファイルかつ隠しファイルとして作成され、復帰時に自動で削除されます。複数回隠し処理を実行するとそのときに隠されたファイルだけ追記されるので、あとからドットファイルが増えたときにも安心です。

ドットファイルのフルパスが改行区切りで記載されたテキストファイル

とここまで書いたけど

最近使いはじめたサードパーティ製のファイルエクスプローラである Files にはドットファイルを隠しファイルと同じように非表示にする設定があるのでこのスクリプト作った意味あんまりなくなっちゃったっていう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?