> 確かにyyyymmddhhmmss のように見えますよね。
はい。こちらはまだ(あてにしてよい)仕様かどうかは分かりませんから、孫フォルダの最終更新日付を比較の対象にして、削除するためのバッチプログラムを自動作成する Windows Script Host (VBScript, JScript) のプログラム例をご紹介します。
■listup.wsf
<package>
<job>
<script language='VBScript'>
Function MonthsAgo(n)
MonthsAgo = FormatDateTime(DateAdd("m", - n, Now))
End Function
Function DaysAgo(n)
DaysAgo = FormatDateTime(DateAdd("d", - n, Now))
End Function
Function HoursAgo(n)
HoursAgo = FormatDateTime(DateAdd("h", - n, Now))
End Function
</script>
<script language='JavaScript'>
Enumerator.prototype.asArray = function () {
var anArray = [];
for (; !this.atEnd(); this.moveNext())
anArray.push(this.item());
return anArray;
}
Array.prototype.do_ = function (operation) {
for (var i = 0; i < this.length; i++)
operation(this[i]);
}
Array.prototype.select_ = function (discriminator) {
var anArray = [];
this.do_(function (each) { if (discriminator(each)) anArray.push(each) });
return anArray;
}
function listup_files(filepath, discriminator) {
discriminator = discriminator || function (each) { return true }
var FileSystemObject = new ActiveXObject('Scripting.FileSystemObject');
var rootFolder = FileSystemObject.getFolder(filepath);
var subFolders = new Enumerator(rootFolder.subFolders).asArray();
subFolders.do_(function (subFolder) {
WScript.echo('REM ' + subFolder);
var subsubFolders = new Enumerator(subFolder.subFolders).asArray();
subsubFolders.select_(discriminator).do_(function (subsubFolder) {
WScript.echo('RMDIR /Q /S ' + subsubFolder);
});
WScript.echo('');
});
WScript.echo('PAUSE');
}
</script>
<script language='JavaScript'>
var targetpath = 'E:\\EasySaverBackup'; // ★1
var discriminator1 = function (folder) { return folder.DateLastModified < new Date(MonthsAgo(1)) }
var discriminator2 = function (folder) { return folder.DateLastModified < new Date(DaysAgo(1)) }
var discriminator3 = function (folder) { return folder.DateLastModified < new Date(HoursAgo(1)) }
listup_files(targetpath, discriminator1); // ★2
</script>
</job>
</package>
■listup.wsf の編集
★1: 親、子、孫フォルダの親フォルダを指定します
★2: discriminator1, 2, 3 は、実行する時刻から、それぞれ 1か月前、1日前、1時間前の孫フォルダを抽出するよう指示するためのプログラムで、listup_files() の第二引数に与えてやります。
■実行方法
(3)は画面に出力し、(4)は rmdir.bat バッチファイルに出力をリダイレクトします。(5)で実際に削除を指示します。
(1) listup.wsf を E:\ に格納します
(2) コマンドプロンプトを開き CD E:\ に移動します
(3) cscript.exe //nologo listup.wsf
(4) cscript.exe //nologo listup.wsf > rmdir.bat
(5) rmdir.bat
■(3)の実行例
・削除対象がない場合
E:\>type rmdir.bat
REM E:\EasySaverBackup\2007071210480309193a97
RMDIR /Q /S E:\EasySaverBackup\2007071210480309193a97\20080422000540
RMDIR /Q /S E:\EasySaverBackup\2007071210480309193a97\20080429000748
RMDIR /Q /S E:\EasySaverBackup\2007071210480309193a97\20080506110544
RMDIR /Q /S E:\EasySaverBackup\2007071210480309193a97\20080513000344
REM E:\EasySaverBackup\20070712105211091d0173
RMDIR /Q /S E:\EasySaverBackup\20070712105211091d0173\20080416000319
RMDIR /Q /S E:\EasySaverBackup\20070712105211091d0173\20080423000228
RMDIR /Q /S E:\EasySaverBackup\20070712105211091d0173\20080430000800
RMDIR /Q /S E:\EasySaverBackup\20070712105211091d0173\20080507085010
REM E:\EasySaverBackup\20070712105354091e963c
RMDIR /Q /S E:\EasySaverBackup\20070712105354091e963c\20080417001456
RMDIR /Q /S E:\EasySaverBackup\20070712105354091e963c\20080424000837
RMDIR /Q /S E:\EasySaverBackup\20070712105354091e963c\20080501002234
RMDIR /Q /S E:\EasySaverBackup\20070712105354091e963c\20080508000339
REM E:\EasySaverBackup\20070712105419091ef4f6
RMDIR /Q /S E:\EasySaverBackup\20070712105419091ef4f6\20080418000230
RMDIR /Q /S E:\EasySaverBackup\20070712105419091ef4f6\20080425000132
RMDIR /Q /S E:\EasySaverBackup\20070712105419091ef4f6\20080502000801
RMDIR /Q /S E:\EasySaverBackup\20070712105419091ef4f6\20080509000226
REM E:\EasySaverBackup\20070712105457091f8c83
RMDIR /Q /S E:\EasySaverBackup\20070712105457091f8c83\20080419000341
RMDIR /Q /S E:\EasySaverBackup\20070712105457091f8c83\20080426000234
RMDIR /Q /S E:\EasySaverBackup\20070712105457091f8c83\20080506111003
RMDIR /Q /S E:\EasySaverBackup\20070712105457091f8c83\20080510000353
PAUSE
E:\>
・削除対象がある場合
E:\>type rmdir.bat
REM E:\EasySaverBackup\2007071210480309193a97
REM E:\EasySaverBackup\20070712105211091d0173
REM E:\EasySaverBackup\20070712105354091e963c
REM E:\EasySaverBackup\20070712105419091ef4f6
REM E:\EasySaverBackup\20070712105457091f8c83
PAUSE
E:\>
■さらなる改善ポイント
・バッチプログラムの実行も指示する
・タスクとして登録して定期的に実行を指示する
・★2 で指示する discriminator をチューニングする
・その他のプログラミング言語の移植にトライする
補足
>出来あいのソフトウェアをお探しのようですが、そういう削除を行うプログラムを自作することは選択肢に入れてもよいのでしょうか。 OKです。vbsかbatファイル程度であれば、着手は可能だと思います。 >孫フォルダの名前にバックアップを着手した時刻らしきものが記録されているように見えます。そこに注目するとプログラム可能では?? と回答者は感じました。 ヒントありがとうございます。 確かにyyyymmddhhmmss のように見えますよね。 ソフトの仕様にはそこまで触れられていなかったので こちらについては詳しく検証して調べていく必要がありそうです。