|
秀丸メール本体上で、変更したいメールを複数選択して実行する用のマクロを
作ってみました。
一応これで大丈夫だと思いますが、もしかしてメールが壊れるといけないので、
どこかでテストしてうまく動くことを確認てから使ってみて欲しいです。
loaddll "tkinfo.dll";
#n = dllfunc("LockSelection");
while(1) {
#n = dllfunc("EnumSelection", 1);
if( #n == 0 ) {
break;
}
call RenameAttachFolder;
}
#n = dllfunc("UnlockSelection", 1 );
endmacro;
RenameAttachFolder:
$s = dllfuncstr("CurrentHeader","X-Attach:");
if( $s == "" ) {
return;
}
#x = strstr( $s, "\\" ) + 1;
#cx = strstr( midstr( $s, #x, 999 ), "\\" );
$prevfolder = midstr( $s, #x, #cx );
$prevpath = midstr( $s, 0, #x + #cx );
$date = dllfuncstr("FormatDate", dllfuncstr("CurrentHeader","Date")
, "YYMMDD");
$newfolder = "受信添付" + $date;
$root = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\";
$prevpath = $root + $prevpath;
#number = 0;
while(1) {
if( #number < 10 ) {
$number = "0" + str(#number);
} else {
$number = str(#number);
}
$newfolder2 = $newfolder + "_" + $number;
$newpath = $root + leftstr( $s, #x ) + $newfolder2;
if( $prevpath == $newpath ) {
break;
}
if( dllfunc("Bypass_MoveFile", $prevpath, $newpath) == 1 ) {
break;
}
#number = #number + 1;
if( #number >= 9999 ) {
// おかしい
message "フォルダ名の変更に失敗しました。中断します。"
+ "エラーコード = "
+ str(dllfunc("Bypass_GetLastError"));
endmacro;
}
}
#n = dllfunc("BeginEditMail");
#count = dllfunc("CountCurrentHeader", "X-Attach");
#i = 0;
while( #i < #count ) {
$prev = dllfuncstr("CurrentHeader2", "X-Attach", #i);
$basename = midstr( $prev, #x + #cx + 1, 999 );
$new = leftstr( $prev, #x ) + $newfolder2 + "\\" + $basename;
#n = dllfunc("SetHeader2", "X-Attach", $new, #i );
#i = #i + 1;
}
#n = dllfunc("SaveEditMail", 0, 0 );
return;
|
|