うぎゃあああああああああああ

今まで撮り貯めた絵チャットSSフォルダを直削除*1してしまったああああたたたホアーッ
だいなファイラ操作ミスです! マーク状態に気づかずファイルにカーソル合わせて削除実行したら怒涛の量のファイルを消しだしてもうなんつうか止まんなくてギャー(落ち着け
なんとか途中で止めさせたけど2004年以前のデータは全滅。禿げ上がるヤバさがここにあるわけですが、「復元」というこの場において唯一神ゴッドなソフトがあるわけでこいつを使えばなんとかファイルを復活させられるかもしれない。
というのも、消したファイルの跡に、別の情報が上書きされたらおしまいなのですね。要約すると急いで復元させろと。
復元様を起動し、削除されたファイル一覧を表示…でたああああ今消したファイル達!
で、同じHDDに書き込んだら今言った現象が起こりうるから別のHDDに書きこまなきゃならんのですが、オイラのPCにはHDDはひとつ。パーティションも1つ。はい、共用PCの出番です! LANの向こうの共用PCに復元したファイルを送りつけます!
んで、これがまたすーげー時間がかかります。半日かかりました_| ̄|○ 削除はほんの数秒の出来事だったのに…だいなファイラの処理の速さがこれでわかりますね!(゜∀。)
復元ファイル転送の間、外で水まきしたりウロウロしたり部屋の片づけしたりして待ってました…。
復元が終わってからざっとファイルを見ると、明らかにファイル容量がおかしいのがチラホラ…。はい、あっちこっち復元失敗してます_| ̄|●
でもまあなんというかほとんど復元成功したみたいでよかった。ハァ('A`)
で、SSファイルを今まで日ごとに120以上のフォルダで仕分けしていたのですが、フォルダ構造が全部飛んで一からやり直しだコラ。
ファイル名にある日付を確認してフォルダ作って選んで移して…なんてのを100以上やるとかなりの作業量で、内容的に実のあるもんでもないし、できる事なら二度とやりたくない作業です。
なので、コレを機に自動化を図る事にしました。
MS-DOSコマンドと、正規表現置き換えができるK2Editorを使います。正規表現がマジムズイです('A`)

フォルダを作る

まず、日ごとのフォルダを作る。20050118といった形式。これをSSファイルの名前を使って作る。
まず、SSファイル一覧のリストテキストファイルを作る。こいつはMS-DOSコマンドで一発だ。

cd (SSファイルがあるフォルダ)
dir /b /o:n > list.txt

これでlist.txtファイルが作られてその中に名前順に並んだSSファイルのリストが記録されるわけだ。
これを加工し、日ごとのフォルダを作るバッチファイルを作る。ちなみにSSファイルリストは後で使うので別名でとっておく。

ss20040509033216.bmp
ss20040509033219.bmp
ss20040509033230.bmp
ss20040509033233.bmp
ss20040528001115.bmp
ss20040528022008.bmp
ss20040528080014.bmp
ss20040824004832_scatter.png
ss20040826065223.bmp
ss20040826071127.bmp
ss20040826082307.bmp
...

こんな感じの内容なので、「ss」を「」に置き換えることで削除。これはメモ帳でもできるね。
次に正規表現置き換えだ。「\.(bmp|png)」を「」に置き換えて拡張子のところを削除。
しかし上のリストにもあるように、「_○○」ってのがあるファイルがいくつかあるのです。こいつを「_.*」を「」に置き換えて削除。*2これで日付と時間だけのデータになったのだ。
今度はこれから時間の部分を消す。後ろから6文字を「」に置き換えればいいわけで、「.{6}$」を「」に置き換えです。これで作りたいフォルダのリストになったわけだけど、これだとフォルダがたくさんダブっちゃうんだわね。
なので、ダブってる行だけ「」置き換えで消したんだけど、これがまた難しくて試行錯誤でやっとできてしかもその書式覚えてない_| ̄|○*3
「(........\n)\1+」を「\1」に置き換え…だったかな。これを繰り返し実行すればダブりが消せたような気がする。まあとにかく作るフォルダのリストがこれでできた。次はこれをバッチファイルに作り変える。
「^」を「md 」に置き換える。これで完了。リストのファイル名を「list.bat」に変えて実行すると、ドアーッてフォルダが怒涛の数で作られる。

ファイルを仕分けする

で、それぞれのフォルダにファイルを移動させる。ここで最初に作ったSSファイルリストが出てくる。

ss20040509033216.bmp

こう書いてあるのを

move ss20040509033216.bmp .\20040509

全部の行でこうする。結構乱暴な方法でやりました。
まず「(.*)」を「$1 \.\\$1」に置き換える。
そうすると

ss20040509033216.bmp .\ss20040509033216.bmp .\

こうなるので「\.\\ss」を「\.\\」に置き換え、「 .\$」を「」に置き換え、「\.(bmp|png)$」を「」に置き換えで

ss20040509033216.bmp .\20040509033216

こうする。で、「_○○」が付いてるファイルのために「_\w*$」を「」に置き換える。
そして「.{6}$」を「」に置き換えて時間の部分を削除して、仕上げに「^」を「move 」に置き換えて完成!! あとはさっきみたいに拡張子をバッチファイルに変えて実行なのだ。パソコンがガーッて処理してくれます。

終わって

正規表現マジむずい。でも今回のでだいぶ理解が進んだ。マジ参考になる資料をCcoさんありがとう。

参考データ
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
K2Editorでの正規表現の解説
http://www4.ocn.ne.jp/~kaerume/k2e/regex_top.html
clipsed
http://www.vector.co.jp/soft/win95/util/se144966.html

clipsedはセットになってる正規表現書式リストがバリ参考になりました。

*1:ゴミ箱無し問答無用

*2:実際はなんか四苦八苦で削除したけど覚えてない

*3:あかんがな