2017年6月26日月曜日

HDDの大量ファイルを利用はするが管理はしない。ファイル活用支援バッチ FileLinkMaker.bat

 以前から思っていたのですが、ファイル管理と言うのは悩みの種でした。
日々いつ視聴や利用する宛てもなくHDD領域を占拠していく把握しきれない録画ファイルや画像・音声のファイル。一つのドライブやパソコンのみならず家庭内LANの共有フォルダに分散したファイル。エクスプローラの検索が上手くいかずイライラしたり遅かったり時間かけて諦めたりorz 整理しようとしたらドライブを超えるためにファイルの移動に時間がかかったり。いざ整理しようとすると下手に整理していつの間にか重複ファイルが出来てたり。偏執的にフォルダを切ったためにファイルの場所が不明になったり。過去録画した番組を再録画してHDDの肥やしになったり、クラウドは遅いし無料なのがないし10TB超えてくるとアップロードの手間だけでも、、、ファイル管理は悩みの種でした(T_T)/~~~
 ファイル数が数万とかになってくると個別に整理なんてする気にもならなくて、もう下手にフォルダ分けとかや~めた。と可能な限りフォルダを切らずに1つのフォルダ階層につまりd:\とかの直下に貯めていたのですがいくらエンコードで小さくして保存しているとはいえ保存ドライブが複数になってくと元の木阿弥orz WindowsがDOSからのファイルシステムを引きずっている関係上、どーしようもないのは解ってるんですけどね。
 と言う訳で、ファイルが分散しても利用する段階で目的に応じてまとめ検索可能ならファイルの管理はテキトーでイインジャネ。それならドライブ追加の度にファイルをまとめるのに四苦八苦する事もないだろうし。容量の少ないドライブを1つにまとめられるならそれに越したことはないんだけどね。んで考えてみた。
 1.可能な限り実ファイルはそのまま。
 2.ファイル・フォルダ名をタグのように扱い検索キーとして使う。
 3.気軽に使える早い検索速度を目指す。
 4.検索は複数ドライブ・複数キーを出来るようにする。排他検索できたら吉。
 5.まとめたファイルを参照できるようにする。
 6.まとめたファイルをプレイヤーなどで再生できるように。ランダム再生。順次再生。
 7.アプリ設定はできるだけINIファイルに。
 8.特殊文字を可能な限り回避するため、中間ファイル作成は可能な限りしない。
 9.大まかに条件をまとめて選択切替可能とする。
こんな感じか。
 どんな手法で実現するか考えてくと、ファイル検索は"Dir"だろーなーこれ以上高速検索するコマンド知らんしこねくりまわしてなんとかしてみるか。
 ファイルへのアクセスは以前使ったシンボリックリンク作成"mklink"ってのが使えるんじゃないかと。シンボリックリンクの特性は見た目ショートカットなんだけど、動画プレイヤーのフォルダ指定でショートカットだと認識しないけどシンボリックリンクだと認識したり、リンク移動や削除はただのラベル移動や削除なんだけど、コピーだと実ファイルを置きにきたり。
 ただし欠点はコマンドの入出力の記述がひたすらメンドイ使い勝手の悪さ。そこいらを自動化できればかなりイイかもと妄想。
 "Dir""mklink"この二つのコマンドが今回のキーかな。そしてアプリの基本スタンスは「複数フォルダから複数条件でファイル・フォルダを高速検索して、条件に合ったファイルのシンボリックリンクを指定フォルダにまとめて作るアプリ」とした。検索ワードで引っ張りだしてとにかくマトメちまえば、後は煮るなる焼くなりどーとでもw
 で、何とか形になって落ち着いたのだが、、、、
 FileLinkMakerは全てWindows10標準DOSのバッチスクリプトです( ゚Д゚)、、、かなりアレなBATスクリプトになってしまったため、もしかすると他バージョンのWindowsだと正常に動かない可能性があります。後、リンク作成時のBATは「管理者として実行」する必要があります。
 前振りはココまでとして、今回のスクリプトはブログに貼り付けでもよかったのですが、BATとINIファイルでかなりの行数になり、貼り付けミスってコードエラーもありえるので、今回はダウンロードして提供する事にしました。
 しかしフルBATだし、俺以外に使う人いるのか?
FileLinkMaker10170625 ダウンロード

FileLinkMakerの動作的な話
FileLinkMaker.bat動作画面
「1~6」を設定する。※5.6.は条件選択。
 設定が終わり実行すると以下のような動作をします。
「5.検索範囲」と「3.出力条件(設定)」で「4.検索パス」を順次検索する。
 ②でヒットしたファイルのシンボリックリンクを「1.出力パス」「3.出力条件(名)」のフォルダに作成する。。
 ②が完了すると「2.出力アプリ」にフォルダ情報を渡してファイルを参照できます。

FileLinkMaker注意点
 検索は単一の文字列しか出来ません。複数キーでの検索、つまりDIRコマンドでのワイルドカード的な検索文字は使えませんというか、使ったら検索してくれません。今後の課題ですね、
 FileLinkMaker実行時DOSファイル規約の縛りをそのまま受けます。特に特殊文字や\/:*?<>|! % ; ハンカクテンなどが設定値やファイル名に入っていたら異常動作したりファイルが見つからずリンク作成できないフルDOSのBATでつくったためどーしよーもない欠点があり、そーいうファイルを処理したかったら事前に置換または隔離しておく必要があります。
 またファイルの置き場所にスペースや特殊文字が入ってたらダメとか、もー虐めないでとしか言いようがない( ˘•ω•˘ )
  ファイル名の場合は予めファイル名をチェックして置換しておくしか無いでしょう。チェックと置換作業にはFlexible Renamerが具合よかったです。それ以外の特殊文字は実際にやってみないと解らないようなのもあるわけで、そーいうのはDOSコマンド
>md $ && move * $ && for /f "delims=;" %j in ('dir $\*.* /b /s /a-d') do move "%j" .
とか走らせて$フォルダに残ってるのが特殊文字使用ファイルと判断してフルリネームか隔離するしかないかと。
 後、当然ながらフツーのDOSコマンドで作ったため、セキュリティ的に参照不可的な場所にはアクセスできません。

FileLinkMaker簡単な使用方法
※リンクを出力するフォルダはSSDなど高速読み書きできる場所がイイかもしれません。
①リンクからFileLinkMaker10170625.zipFileLinkMaker1設定シンプル.zipをダウンロードしてまともなフォルダ名の同じ場所に展開します。 
ダウンロードファイル
FileLinkMaker1.bat ファイルリンクメーカー本体実行batファイル
  FileLinkMaker1.ini ファイルリンクメーカーシステム設定iniファイル。初回保存時まではユーザ設定も保持している。
②とりあえずクリックして実行(右クリックして「管理者として実行」は後でもいいかと。こんな警告が出たら「詳細情報」をクリックしたら「実行」ボタンが出てくるので実行する。気になるならファイル上右クリック「編集」でメモ帳で一度ファイルを開いて「上書き保存」してください。以後出なくなります。
 実行するとこんな画面が出てきます。
「1.出力パス」や「4.検索パス」のパス名は、ログイン名によって変わってくるはずです。一度保存すると情報が確定するので固定されます。
画面上部が項目を、真ん中が詳細、下が操作を表示してます。
 [Enter]を押すと項目のマークが下に移動し、連動してて画面が切り替わっていきます。[Enter]を高速連打すると異常動作する可能性があるので注意してください。
 保存 s [Enter] してください。FileLinkMaker1.bat と FileLinkMaker1.ini のフォルダに ユーザ設定を保存するFileLinkMaker1.txt が追加されます。FileLinkMaker1.txtやシンボリックリンクの他にFileLinkMaker1が作るファイルはシンボリックリンク作成時のログを保存するFileLinkMaker1.logがあります。
 終了x[Enter]で終了します。FileLinkMaker1.txt を見ると現在のユーザ設定を見る事ができ、慣れたら直接編集とかも可能です。
 FileLinkMaker1.iniは触らないでください。触る場合はFileLinkMaker1.batを十分理解して自己責任でお願いします。
 ※「2.出力アプリ」で設定されてるMassiGraは、高速画像ビュワで画像のあるフォルダを渡せばその中身を高速で表示してくれる優れものフリーソフトです。【DL】

 今度は「管理者として実行」してください。「1.出力パス」「3.検索条件」「4.検索パス」を上記画面設定にしてください。
 数字[Enter]で〇が詳細の指定No.に移動します。
「5.検索範囲」は2か3にしてファイルが入るようにしてください。
 設定が上記画面設定のままなら
 「4.検索パス」 C:\Users\zen\  ※ただし「1.出力パス」1,2,3 を除く
 「5.検索範囲」フォルダとファイル
 「3.検索条件」.jpg .jpe .bmp .png .pdf
 を検索キーとして合致したファイルを
  C:\Users\zen\ファイルリンク\写真\ ※「1.出力パス」「5.検索範囲名」\
 に出力します。
 個人フォルダに意図せず散逸した写真をフォルダ一つで参照できるようにします。
 確認したら ¥[Enter]で処理を開始します。
実行後は画面が多少変化します。3.検索条件:.162は作成したファイルリンク数です。ここで画像ビュワを登録していると @[Enter]で参照できますが、なければp[Enter]してください。Explorerが[1.出力パス]を参照して立ち上がります。
 以上、FileLinkMakerの簡易操作説明でした。以後、詳しい機能説明はページを改めて追加していきたいと思います。まー基本はメニュー見つつ操作していってくれたらいいかも。サンプルのINIも参考にしてください。では(T_T)/~~~

0 件のコメント:

コメントを投稿