Windowsでは勝手に「Thumbs.db」ファイルが作られる。これが地味に邪魔だ。
自宅のPCでは作成されないように設定しているが、会社ではそうもいかない。
自分だけ設定しても、他の社員が未設定だと、NAS上の写真フォルダーにThumbs.dbが生成されてしまう。
たまに気になって削除しようとするが、普通に削除しようとしても消せないことが多い。
簡単な削除方法としては、メモ帳などで開いて中身を全選択してDeleteキーで削除 → 保存。
その後、Thumbs.dbファイル自体を削除できるようになる。
ただ、複数ファイルがあるとこの作業は面倒だ。
もっと簡単に削除できないか、いろいろ試してみた。
バッチファイルやPowerShellで処理を組んでみたが、うまくいかなかった。
ファイルを開いて中身を削除 → 保存する処理がうまく動かない。
Thumbs.dbが使用中なのが原因かもしれない。権限変更も試したが、結果は変わらず。
自分の知識不足もあると思うが、バッチとPowerShellは諦めた。
それならWindowsプログラムはどうだろうと思って、C#でコンソールアプリを作ってみた。
結果は「成功」だった。
とはいえ、プログラムは全部AIに書かせた。GUIなしのシンプルな構成だ。
最近は頭を使わなくてもプログラムが作れる時代になっていて、ちょっと怖い。
以下にソースコードを載せるが、ツッコミどころは多いかもしれない。
ただ、目的が達成できればそれでいい。
ちなみに、Console.WriteLineでメッセージを表示しているが、処理が一瞬で終わるので画面にはほぼ表示されない。
ファイル構成
・ソースコード:Thumbs_db_del.cs
・作成される実行ファイル:Thumbs_del.exe
using System; using System.IO; class Program { static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("ファイルまたはフォルダをドラッグしてください。"); return; } foreach (var path in args) { if (File.Exists(path)) { if (Path.GetFileName(path).Equals("Thumbs.db", StringComparison.OrdinalIgnoreCase)) { TryDelete(path); } } else if (Directory.Exists(path)) { var thumbsFiles = Directory.GetFiles(path, "Thumbs.db", SearchOption.AllDirectories); foreach (var file in thumbsFiles) { TryDelete(file); } } } } static void TryDelete(string filePath) { try { File.Delete(filePath); Console.WriteLine(string.Format("削除: {0}", filePath)); } catch (IOException) { Console.WriteLine(string.Format("使用中: {0}", filePath)); } catch (Exception ex) { Console.WriteLine(string.Format("エラー: {0} - {1}", filePath, ex.Message)); } } }
コンパイル方法
コマンドプロンプトでソースコードのあるフォルダーに移動して、以下のコマンドを実行する
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /optimize+ /out:Thumbs_del.exe Thumbs_db_del.cs
※ “4.0.30319” は環境に合わせて変更すること。
コンパイルが面倒な方のためにThumbs_del.exeファイル(zip形式)を置いとく
ダウンロードはここ
(ウイルスチェック済み)
使い方
作成した Thumbs_del.exe(またはショートカット)をデスクトップに置いて、削除したい Thumbs.db ファイルや、それを含むフォルダーをドラッグ&ドロップすればOK。
これで、面倒なThumbs.dbの削除が一気に楽になる!
【注意】
このプログラムの利用により何か問題が起きても、作成者は責任を負えませんので、自己判断でご利用ください。
コメント