|
一応、作ってみましたが、ファイルを削除する所までマクロで実行するのはちょっ
と怖いので、バッチファイル用のデータを生成するだけにしました。
送信済みフォルダを選択して実行する形になります。
----------------------------------------------------------------------------
-----------------
loaddll "tkinfo.dll";
#n = dllfunc("SetSortMethod", 4);
#n = dllfunc("SetViewArea", 5);
#mailcount = dllfunc("MailCount");
#mailindex = #mailcount - 1;
$total = "";
$duplist = "";
disablebreak;
#dupcount = 0;
#nodupcount = 0;
while( #mailindex > 0 ) {
#n = dllfunc("SetMailIndex", #mailindex);
#attachcount = dllfunc("CountCurrentHeader", "X-Attach");
#attachindex = 0;
while( #attachindex < #attachcount ) {
$attach = dllfuncstr("CurrentHeader2", "X-Attach", #attachindex);
$path = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "
\\" + $attach;
#size = dllfunc("Bypass_GetFileSize", $path);
if( #size >= 0 ) {
$basename = midstr( $attach, strrstr($attach, "\\") + 1 );
$item = "\x01" + $basename + "\x02" + hex(#size) + "\x03";
if( strstr( $total, $item ) >= 0 ) {
//重複してる
$duplist = $duplist + "attrib -r \"" + $path + "\"\ndel
\"" + $path + "\"\n";
#dupcount = #dupcount + 1;
} else {
$total = $total + $item;
#nodupcount = #nodupcount + 1;
}
}
#attachindex = #attachindex + 1;
}
#mailindex = #mailindex - 1;
if( keypressed != 0 ) {
question "中断しますか?\n重複 = " + str(#dupcount) + " 非重
複 = " + str(#nodupcount);
if( result == yes ) {
break;
}
}
}
if( #dupcount == 0 ) {
message "重複した添付ファイルはありませんでした。";
endmacro;
}
#n = dllfunc("NewMail");
gofiletop;
beginsel;
gofileend;
delete;
insert $duplist;
message "削除しても大丈夫そうな添付ファイルをリストアップしました。中身
をバッチファイルに保存して実行すると実際に削除されます。";
|
|