|
僕の想像する例でマクロサンプル作ってみました。
「C:\Data」ってフォルダだけあらかじめ作っておけば実行できます。そこを適当
に書き換えて実行してもらえばいいんじゃないかと思います。
例えば受信フォルダにあるメールの添付ファイルは、「C:\Data」の配下に「受
信」ってフォルダが作成されて、そこに保存されます。
「受信\A」ってフォルダがあると、「A」って名前のフォルダ配下に保存されます。
そんなマクロにしてみました。
message文はデバッグ用に入れてあります。実際に本番用で使うにはそこをコメン
トアウトします。
----------------------------------------------------------------------------
-------
$destfolderbase = "c:\\data";
loaddll "tkinfo.dll";
$prevaccount = dllfuncstr("CurrentAccount");
$prevfolder = dllfuncstr("CurrentFolder");
while( dllfunc( "SelectRecvMail" ) ) {
#count = dllfunc("CountCurrentHeader", "X-Attach");
if( #count > 0 ) {
#i = 0;
while( #i < #count ) {
$attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
$src = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
+ "\\" + $attach;
$basename = midstr( $attach, strrstr($attach, "\\") + 1 );
#xPeriod = strrstr( $basename, "." );
if( #xPeriod >= 0 ) {
$ext = midstr( $basename, #xPeriod );
$basename = leftstr( $basename, #xPeriod );
} else {
$ext = "";
}
$emailfolder = dllfuncstr("CurrentFolder");
#xYen = strrstr( $emailfolder, "\\" );
if( #xYen >= 0 ) {
$emailfolder = midstr( $emailfolder, #xYen + 1 );
}
$destfolder = $destfolderbase + "\\" + $emailfolder;
if( ! existfile( $destfolder ) ) {
#n = dllfunc("Bypass_CreateDirectory", $destfolder );
}
$dest = $destfolder + "\\" + $basename + $ext;
#nLabel = 1;
while( existfile($dest) ) {
#nLabel = #nLabel + 1;
$dest = $destfolder + "\\" + $basename + "(" + str(#nLab
el) + ")" + $ext;
}
message "$attach = " + $attach + "\n" +
"$basename = " + $basename + "\n" +
"$ext = " + $ext + "\n" +
"$emailfolder = " + $emailfolder + "\n" +
"$destfolder = " + $destfolder + "\n" +
"$dest = " + $dest;
#n = dllfunc("Bypass_CopyFile", $src, $dest, 0 );
#n = dllfunc("Bypass_SetFileAttributes", $dest, 0x20 );
#i = #i + 1;
}
}
}
#n = dllfunc("SelectFolder", $prevaccount, $prevfolder);
----------------------------------------------------------------------------
-------
|
|