添付ファイルを特定のフォルダにコピーNo.04180
haru2 さん 01/11/29 13:04
 
いつも、御世話様です。

 添付ファイルをある特定のフォルダfにコピーしたいのですが、マク
ロでできますか。
 やり方は、ある受信メールを選んでおいて、そこの添付されているフ
ァイルt(実はこれは Excel のファイルで、ある種のテンプレート
ファイルになっています)をfにコピーできれば良いですが。
 この時、日付等の属性を変更したくありません。
 こういうことは、マクロでできるんでしょうか?

 鶴亀のコマンドや、秀丸のそれを見たんですが、よくわかりませ
ん。一旦秀丸で開いて再保存では日付が変わってしまうし、何か良
い方法があれば教えて下さい。

よろしくお願いします。

[ ]
RE:04180 添付ファイルを特定のフォルダにNo.04184
ひろ さん 01/11/29 17:20
 
 haru2 さん今日は、ひろです。
>  添付ファイルをある特定のフォルダfにコピーしたいのですが、マク
> ロでできますか。
 出来ます。
 添付ファイル名の取得に関しては、tkinfo.dll の DLL 関数の内、
CountCurrentHeader, CurrentHeader2 を使います。実際のファイルコピーは、
run "commnd.com /c copy " + $file + $folder;
//   ^^^^^^^^^^NT 系なら cmd.exe
とするか、コマンドプロンプトが表示されるのが嫌なら、田楽 DLL など外部
ツールを利用します。
 実際のマクロの作成は、環境や好みについても書かれて有るほうが、返信
しやすいです。

[ ]
RE:04184 添付ファイルを特定のフォルダにNo.04191
haru2 さん 01/11/30 08:26
 
ひろさん、こんにちは。

> 出来ます。

ありがとうございます。自己流でやってみます。もし何かあれば、
またよろしくお願いします。

[ ]
RE:04184 添付ファイルを特定のフォルダにNo.04192
haru2 さん 01/11/30 15:18
 
自力でやろうとしましたが、次の点がわかりません。

添付ファイル保管場所を A フォルダ、コピー先を B フォルダとし
たときに、添付ファイル C をコピーするとして、

run "commnd.com /c copy " + $file + $folder;

の使い方がわかりません。$folder には、AB どちらのフォ
ルダをしたらよろしいですか?
それと、B に同じ名前のファイル C2 があった時は、C2 をゴミ箱に
入れたいのですが、可能ですか?

[ ]
RE:04192 添付ファイルを特定のフォルダにNo.04194
tnobu2 さん 01/11/30 17:19
 
>自力でやろうとしましたが、次の点がわかりません。
>
>添付ファイル保管場所を A フォルダ、コピー先を B フォルダとし
>たときに、添付ファイル C をコピーするとして、
>
>run "commnd.com /c copy " + $file + $folder;
>
>の使い方がわかりません。$folder には、AB どちらのフォ
>ルダをしたらよろしいですか?
>それと、B に同じ名前のファイル C2 があった時は、C2 をゴミ箱に
>入れたいのですが、可能ですか?

$fileには、コピー元のフォルダ名A+ファイル名C
$folderには、コピー先のフォルダ名B(+ファイル名)

です。
しかし、DOSコマンドを知らない人って増えているんですね。

ちなみにMS-DOSプロンプト(NT/2kならコマンドプロンプト)で
"copy /?"を実行するとコマンドの説明が出ます。

[ ]
RE:04192 添付ファイルを特定のフォルダにNo.04195
tnobu2 さん 01/11/30 17:22
 
>それと、B に同じ名前のファイル C2 があった時は、C2 をゴミ箱に
>入れたいのですが、可能ですか?

忘れてましたが、コピー先に同じファイル名があった場合、特に指定が
無ければ上書きされてしまいます。
詳しくはcopyコマンドの説明をご覧ください。

[ ]
RE:04194 添付ファイルを特定のフォルダにNo.04196
haru2 さん 01/11/30 17:41
 
>$fileには、コピー元のフォルダ名A+ファイル名C
>$folderには、コピー先のフォルダ名B(+ファイル名)
>です。
わかりました。ありがとうございます。

>しかし、DOSコマンドを知らない人って増えているんですね。
私もそのうちの一人です。以前にやったことがありましたが、最近
使わないのでさっぱり忘れています。

>ちなみにMS-DOSプロンプト(NT/2kならコマンドプロンプト)で
>"copy /?"を実行するとコマンドの説明が出ます。
参考にさせて頂きます。

[ ]
RE:04195 添付ファイルを特定のフォルダにNo.04197
haru2 さん 01/11/30 17:46
 
>忘れてましたが、コピー先に同じファイル名があった場合、特に指定が
>無ければ上書きされてしまいます。
>詳しくはcopyコマンドの説明をご覧ください。

/-y なら、上書きするか問い合わせてくれるんですね。
これを使えば良さそうなんですが、マクロではできないんですね。

[ ]
RE:04194 添付ファイルを特定のフォルダにNo.04198
マイケル さん 01/11/30 17:48
 
マイケルです。

tnobu2さんの きょう 午後 5時19分 の
“RE 04192 添付ファイルを特定のフォルダにコピー”について:
====

ちゃちゃです。

>しかし、DOSコマンドを知らない人って増えているんですね。

DOS コマンドが扱えると、ほとんど教祖さま扱いされます。(笑)
Win98 なんかが DOS モードで止まったら、お呼びが掛かるんですね。
んで、DOS のファイラやエディタを入れたフロッピーを錦の袋に入
れてお出ましです。
「近頃 EDLIN がないのが不便なんだよねぇ」とかつぶやきながら。

---
TuruKame Ver.1.52, Hidemaru Ver.3.11

[ ]
RE:04184 添付ファイルを特定のフォルダにNo.04200
haru2 さん 01/11/30 21:42
 
>run "commnd.com /c copy " + $file + $folder;

と、教えていただきましたが、

run "command.com /c copy " + $file + " " + $folder;
としたら、うまくいきました。
ありがとうございます。

[ ]
RE:04197 添付ファイルを特定のフォルダにNo.04204
山紫水明 さん 01/12/01 10:37
 
 haru2さん,こんにちは。

》/-y なら、上書きするか問い合わせてくれるんですね。
》これを使えば良さそうなんですが、マクロではできないんですね。

田楽DLLを使う方法があります。
//---------------------------------------------------//
loaddll "DengakuDLL.dll";
if (!dllfunc("COPY","/i " + $file, $folder)) {
    message "ファイルのコピーに失敗しました";
}
freedll;
//---------------------------------------------------//

》それと、B に同じ名前のファイル C2 があった時は、C2 をゴミ箱に
》入れたいのですが、可能ですか?

//---------------------------------------------------//
//ゴミ箱のフォルダ名を取得
loaddll "tkinfo.dll";
$trashbox = dllfuncstr( "CurrentAccount" ) + "\\ゴミ箱";
freedll;

if( existfile(B + "\\" + C2) ) {
//ゴミ箱行きの処理
loaddll "DengakuDLL.dll";
if (!dllfunc("MOVE",B + "\\" + C2,$trashbox)) {
    message "ファイルの移動に失敗しました";
freedll;
}
//---------------------------------------------------//
のようにしてできませんか?確認はしていませんが。

     では, (^^)/~
                                        山紫水明

[ ]
RE:04204 添付ファイルを特定のフォルダにNo.04205
haru2 さん 01/12/02 10:13
 
 いつも、お世話様です。
 
実際マクロを作成してみたのですが、うまくいきません。
もし、よろしければご指導願いたいのですが。
よろしくお願いします。

 場面は添付ファイル付きの受信メールを、フロッピー a ドライブ
にコピーするというものです。
 42 行目の run での処理、及び、46 行目の実際にテスト的に作っ
たファイルに対して、実行をかけるとうまくいきますが、実際の添
付ファイルでは駄目です。

見にくいマクロで、お見苦しいのですが、一部を抜粋して、単体で
実行できるようにしました。

//<<マクロ始まり>>
loaddll "TKInfo.dll";

//添付ファイル コピー
tenpu_copy:
    if ( dllfunc( "MailType" ) != 3 ){
        message "受信メールを選択して下さい。";
        return;
    }
    $homedir =dllfuncstr("HomeDir");
    $acc = dllfuncstr( "CurrentAccount" ) + "\\";
    $folder = "a:\\";

    #cnt = 0;
    while(1){
        loaddll "TKInfo.dll";
        $tenpu[#cnt] = dllfuncstr("CurrentHeader2", "X-Attach", #cnt);
        if($tenpu[#cnt] == "") break;

        #t_len = strlen( $tenpu[#cnt] );
        #i = #t_len - 1;
        while ( #i >= 0 ) {
            if ( midstr( $tenpu[#cnt], #i, 1 ) == "\\" ) {
                $tenpu_f[#cnt] = midstr( $tenpu[#cnt], #i + 1, #t_len -
#i );
                break;
            }
            #i = #i - 1;
        }
        $file = $homedir + $acc + $tenpu[#cnt];
        if ( existfile( $folder + $tenpu_f[#cnt] ) ){
            question $tenpu_f[#cnt] + "が存在します。ゴミ箱に移動します。
\nよろしいですか?";
            if (result){
                //ゴミ箱に移動処理
                loaddll(hidemarudir + "\\DengakuDLL.dll");
                if ( !dllfunc("MOVE", $folder + $tenp_f[#cnt], $homedir
+ $acc + "ゴミ箱") ) {
                    message "ファイルの移動に失敗しました";
                }
            }
            else endmacro;
        }

        //添付ファイル コピー処理
        run "command.com /c copy " + $file + " " + $folder + " /-y";

        loaddll(hidemarudir + "\\DengakuDLL.dll");
        message $file + " " + $folder;
//      if (!dllfunc("COPY","/i a:\\a", $folder + "b")) {
        if (!dllfunc("COPY","/i " + $file, $folder)) {
            message "ファイルのコピーに失敗しました";
        }
        freedll;
        #cnt = #cnt + 1;
    }
//  loaddll "TKInfo.dll";
endmacro;
//<<マクロ終わり>>


それと、
1.move、copy が tkinfodll、田楽 dll の両方にあるので、その
    都度 load、free しなければなりませんよね?初めて田楽 dll
    を使わせて頂きましたが、そういう使い方で良いんですよね。

2.42 行目の run で実行したとき、ファイルが既に存在する場合、
    dos プロンプトで入力待ちになっている場合、処理は続行され
    てします。入力が終わるまで待ってもらうようにできませんか?

3.ゴミ箱移動の処理なんですが、鶴亀のそれでなく win のものに
    移動させることは、可能でしょうか?

以上、非常に心苦しいのですが、よろしくお願いします。

[ ]
RE:04205 添付ファイルを特定のフォルダにNo.04206
山紫水明 さん 01/12/02 11:26
 
 haru2さん,こんにちは。

》実際マクロを作成してみたのですが、うまくいきません。
》もし、よろしければご指導願いたいのですが。

 丁寧に見る余裕がないのですが,さしあたり

        loaddll(hidemarudir + "\\DengakuDLL.dll");
     ↓
        loaddll hidemarudir + "\\DengakuDLL.dll";
です。

》1.move、copy が tkinfodll、田楽 dll の両方にあるので、その
》    都度 load、free しなければなりませんよね?初めて田楽 dll
》    を使わせて頂きましたが、そういう使い方で良いんですよね。

 そういう使い方でもいいと思いますが,せっかく配列変数に取り込んでおられま
すので,まずまとめて取り込み,その後コピーするという方法にすれば,1回の
ロードと解放で済みす。

》2.42 行目の run で実行したとき、ファイルが既に存在する場合、
》    dos プロンプトで入力待ちになっている場合、処理は続行され
》    てします。入力が終わるまで待ってもらうようにできませんか?

 runsync を使えばいいと思います。

》3.ゴミ箱移動の処理なんですが、鶴亀のそれでなく win のものに
》    移動させることは、可能でしょうか?

leftstr( windir, 3 ) + "recycled"
で Windows のゴミ箱のファイル名が得られます。

     では, (^^)/~
                                        山紫水明

[ ]
RE:04206 添付ファイルを特定のフォルダにNo.04212
haru2 さん 01/12/02 17:55
 
 山紫水明さん、こんにちは。

> 丁寧に見る余裕がないのですが,さしあたり
お忙しい所、すみません。

> そういう使い方でもいいと思いますが,せっかく配列変数に取り込んでおられま
>すので,まずまとめて取り込み,その後コピーするという方法にすれば,1回の
>ロードと解放で済みす。
なるほど、そういう風にさせていただきます。

>》2.42 行目の run で実行したとき、ファイルが既に存在する場合、
> runsync を使えばいいと思います。
わかりました。

>》3.ゴミ箱移動の処理なんですが、鶴亀のそれでなく win のものに
>leftstr( windir, 3 ) + "recycled"
>で Windows のゴミ箱のファイル名が得られます。
わかりました。ありがとうございます。

[ ]
RE:04184 添付ファイルを特定のフォルダにNo.04228
haru2 さん 01/12/04 16:51
 
ひろさん、こんにちは。

>run "commnd.com /c copy " + $file + $folder;
>//   ^^^^^^^^^^NT 系なら cmd.exe

たびたびすみません。ロングファイルネームも使用可能ですか?
それと、ネットワーク経由でのコピーはできますか?

[ ]
RE:04228 添付ファイルを特定のフォルダにNo.04230
ひろ さん 01/12/04 18:14
 
 haru さん今日は、ひろです。
> >run "commnd.com /c copy " + $file + $folder;
> >//   ^^^^^^^^^^NT 系なら cmd.exe
>
> たびたびすみません。ロングファイルネームも使用可能ですか?
run "command.com /c copy \"" + $file + "\" \"" + $folder + "\"";
というように「" (マクロ内では「\"」)」で括れば出来ます。しかし
command.com は渡せる文字数制限 (127 文字) があるので、あまり長
いとエラーになります。

> それと、ネットワーク経由でのコピーはできますか?
 今初めて試しましたが(^^)、出来るようです。

[ ]
RE:04230 添付ファイルを特定のフォルダにNo.04231
haru2 さん 01/12/04 18:44
 
ひろさん、こんばんは。

>run "command.com /c copy \"" + $file + "\" \"" + $folder + "\"";
>というように「" (マクロ内では「\"」)」で括れば出来ます。しかし

>> それと、ネットワーク経由でのコピーはできますか?
> 今初めて試しましたが(^^)、出来るようです。

早速のお返事、ありがとうございます。

[ ]