添付ファイルをパスワード付に圧縮No.47943
rn さん 15/04/21 13:00
 
以前に、そのまま転送時に添付ファイルを圧縮する方法をお聞きしたのですが、表題
のようにパスワード付で圧縮するためには、「-p」のオプションをどの部分にどのよ
うにつけたらよいでしょうか?

以前に教えていただいたコードです

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 添付ファイル圧縮-7zip-Unsent-Separate.mac
// 2013.08.19
// 7-zipのダウンロード先:  http://sevenzip.sourceforge.jp/
//
// このマクロを、「マクロ・マクロ登録・自動起動」の「受信が一段落した時」または
// 「送受信の開始直前」の所に登録しておけばいいかと思います。
// または既に何か登録されてる場合は、そのマクロからexecmacroを使ってこっちの
// マクロも起動するようにしたらいいかと思います。
// マクロの中の「$account = "....";」の部分はご自身のアカウントに書き換える
必要があります。
//
//
//
//  $account = "ご自身のアカウント名";    //!!!書き換えが必要です!!!

    loaddll "tkinfo.dll";
    if( ! dllfunc("IsHidemaruMailMain") ) {
        endmacro;
    }
    $7zip = "C:\\Program files\\7-Zip\\7z.exe";
    if( ! existfile( $7zip ) ) {
        $7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
        if( ! existfile( $7zip ) ) {
            message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
ンストールしてください。\n\n" +
                    "7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fil
es (x86)\\7-Zip にインストールされてる必要があります。";
            endmacro;
        }
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $home = getregstr( "HomeDir" );
    closereg;

    if( dllfunc("GetFolderMailCount", $account, "未送信") == 0 ) {
        endmacro;
    }

    $PrevAccount = dllfuncstr("CurrentAccount");
    $PrevFolder = dllfuncstr("CurrentFolder");

    #n = dllfunc("SelectFolder", $account, "未送信");
    if( dllfunc("IsThreadView") != 0 ) {
        #n = dllfunc("SetThreadView", 0);
    }
    if( dllfunc("ViewArea") != 0 ) {
        #n = dllfunc("SetViewArea", 0);
    }
    #MailIndex = 0;
    #MailCount = dllfunc("MailCount");
    while( #MailIndex < #MailCount ) {
        #n = dllfunc("SetMailIndex", #MailIndex);
        if( dllfuncstr("CurrentHeader", "Resent-From") != "" ) {
            // 「そのまま転送」で転送するメールのみ添付ファイル圧縮する。
            #attachcount = dllfunc("CountCurrentHeader", "X-Attach");
            if( #attachcount != 0 ) {
                #Update = 0;
                #i = 0;
                while(1) {
                    $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
                    if( $attach == "" ) {
                        break;
                    }
                    $ext = dllfuncstr("ToLower", rightstr( $attach, 4 ));
                    if( $ext == ".lzh" || $ext == ".zip"
                     || $ext == ".pdf"
                     || $ext == ".gif"
                     || $ext == ".jpg"
                     || $ext == ".png"
                     || $ext == ".bin"
                     || $ext == ".dat"    //OUTLOOK用にwinmail.dat追加→転送
先のGMailで読めるように!
                     || rightstr($attach, 26) == "\\application_pgp-signature"
                     || rightstr($attach, 26) == "\\application_pgp-encrypted"
                     || rightstr($attach, 25) == "\\application_octet-stream"
                            ) {
                        // 圧縮しても効果がないので圧縮しない
                        // PGP関係の添付ファイルも圧縮しない
                    } else {
                        $path = $home + $account + "\\" + $attach;

                        $pathLzh = $path + ".zip";
                        $cmd = "a \"" + $pathLzh + "\" \"" + $path + "\"";
                        runsync2 $7zip + " " + $cmd;
                        if( ! existfile( $pathLzh ) ) {
                            message "Zip圧縮に失敗したようです。スキップしま
す。";
                        } else {
                            if( #Update == 0 ) {
                                #Update = 1;
                                #n = dllfunc("BeginEditMail");
                            }
                            #n = dllfunc("Bypass_SetFileAttributes", $pathLz
h, 0x00000021);     //ReadOnly属性に設定。
                            #n = dllfunc("Bypass_SetFileAttributes", $path,
0x00000020);        // ReadOnlyを解除。
                            #n = dllfunc("Bypass_DeleteFile", $path);
                            if( #n == 0 ) {
                                message $path + " の削除に失敗しましたが処理
を続行します。";
                            }
                            #n = dllfunc("SetHeader2", "X-Attach", $attach +
 ".zip", #i);
                        }
                    }
                    #i = #i + 1;
                }
                if( #Update ) {
                    #n = dllfunc("SaveEditMail", 0);
                }
            }
        }
        #MailIndex = #MailIndex + 1;
    }
    #n = dllfunc("SelectFolder", $PrevAccount, $PrevFolder);
    endmacro;

[ ]
RE:47943 添付ファイルをパスワード付に圧No.47944
秀まるお2 さん 15/04/21 13:40
 
 パスワード付きで圧縮するには、

     $cmd = "a \"" + $pathLzh + "\" \"" + $path + "\"";

 となってる所を、

     $cmd = "a \"" + $pathLzh + "\" -ppassword \"" + $path + "\"";

 のように、「-ppassword」のようなオプション付きに直せばいいです。

 例えばパスワードを「abcdefg」にしたい場合は、 -pabcdefg のようにすれば
いいです。

[ ]
RE:47944 添付ファイルをパスワード付に圧No.47949
rn さん 15/04/21 15:52
 
早速の回答ありがとうございました
パスワード付きで無事圧縮できました


[ ]