今回から何回かに分けて、多量ファイルの整理に役立つスクリプトを紹介する。
例えば、ハードディスククラッシュ後、復旧ソフト等でぶっこ抜きした、多量のフォルダ所在不明ファイルだ。
分類する情報としては、フォルダが飛んでいるので、ファイル名、タイムスタンプしかない。
このファイルを整理するため、ファイル名先頭に日時文字を付けたり外したりするバッチだ。
例えば、ハードディスククラッシュ後、復旧ソフト等でぶっこ抜きした、多量のフォルダ所在不明ファイルだ。
分類する情報としては、フォルダが飛んでいるので、ファイル名、タイムスタンプしかない。
このファイルを整理するため、ファイル名先頭に日時文字を付けたり外したりするバッチだ。
Batchのつぼ
XP以降のBatchでは、Batch内である程度の文字列加工ができる。
しかも、工夫次第でワークファイルの出力も必要なくなる。
echo xxxx | findstr /C:"yyyyy"
の実行後、errorlevelを見ることでsearch代わりになるし、
摩訶不思議構文のfor文で指定文字列の部分削除ができる。
又、バッチ内サブルーチンコールでは、%1~%nのパラメタがスタックされるので、%~f1(パラメタ%1をフルパスファイル名に変換)等もサブルーチンパラメタと呼び出し元の双方で個々に保持される。
下記バッチは、例えば "qaz.txt" 2014/08/08 12:34 のファイルを"201408081234qaz.txt"に変換/逆変換してくれる。
バッチ内で使用している"dir /tc"を"dir /tw"にすれば作成日ではなく更新日をプレフィクスにすることもできる。
安全のため、ダイレクトに変更せず、変更するためのバッチをカレントに出力している。
作成されたファイル名変更バッチをエディター等で目視確認してから実行しろし。
XP以降のBatchでは、Batch内である程度の文字列加工ができる。
しかも、工夫次第でワークファイルの出力も必要なくなる。
echo xxxx | findstr /C:"yyyyy"
の実行後、errorlevelを見ることでsearch代わりになるし、
摩訶不思議構文のfor文で指定文字列の部分削除ができる。
又、バッチ内サブルーチンコールでは、%1~%nのパラメタがスタックされるので、%~f1(パラメタ%1をフルパスファイル名に変換)等もサブルーチンパラメタと呼び出し元の双方で個々に保持される。
下記バッチは、例えば "qaz.txt" 2014/08/08 12:34 のファイルを"201408081234qaz.txt"に変換/逆変換してくれる。
バッチ内で使用している"dir /tc"を"dir /tw"にすれば作成日ではなく更新日をプレフィクスにすることもできる。
安全のため、ダイレクトに変更せず、変更するためのバッチをカレントに出力している。
作成されたファイル名変更バッチをエディター等で目視確認してから実行しろし。
fnnctime.bat (パラメタで指定したフォルダ配下階層ファイルから,作成日プレフィクスを外す)
bug:元のファイル名先頭が数字だと、消しすぎるバグあり。
0 件のコメント:
コメントを投稿