[ 新規に投稿する ]

ファイルコピーNo.36375
sintachi さん 18/03/04 05:52 [ コメントを投稿する ]
  マクロを使ってこんな事は出来ますか?
フォルダ─Windows─ファイル.hsp
        └画像1.png
        └画像2.png
    └hsp
    └assets
こんな感じのファイル構成があったとします。
秀丸でファイル.hspを開いている時にマクロを使って、
ファイル.hspは一つ上のhspフォルダにファイルコピーし、
画像1.pngと画像2.pngは一つ上のassetsフォルダにファイルコピーしたいのです。
今まではファイラーで自分でファイルコピーしていたのですが、秀丸は本当に色んな事が出来るのでマクロを使えば出来るのかなと思いました。
[ ]
RE:36375 ファイルコピーNo.36376
h-tom さん 18/03/04 14:53 [ コメントを投稿する ]
 
h-tom です。

>マクロを使ってこんな事は出来ますか?
<省 略>
>秀丸でファイル.hspを開いている時にマクロを使って、
>ファイル.hspは一つ上のhspフォルダにファイルコピーし、
>画像1.pngと画像2.pngは一つ上のassetsフォルダにファイルコピーしたいのです。

出来るか、出来ないかで言えば出来ますよ。
ただ、秀丸マクロには削除以外のファイル操作命令は無いので、ファイルのコピー
には、COMコンポーネントや、外部DLLを使う必要があります。
[ ]
RE:36376 ファイルコピーNo.36377
秀丸担当 さん 18/03/05 08:27 [ コメントを投稿する ]
 
h-tomさんの言われる通り、マクロの文としてはファイルのコピーは無いので、DLLなど何かを呼び出す必要があります。
ファイルをコピーするだけであれば、バッチファイルでやるのが一番簡単だと思います。

バッチファイルを呼び出すマクロ:
run "cmd.exe /c c:\\folder\\test.bat " + directory;
endmacro;

test.batの内容:
cd %1
copy *.hsp ..\hsp
copy *.png ..\assets


cmd.exeを使ってバッチファイルを呼び出すのは、空白を含んでいると書き方にクセがあるようで、ダブルクォーテーションをさらにダブルクォーテーションでくくる必要があるようです。
例:
run "cmd.exe /c \"\"c:\\folder space\\test.bat\" \"" + directory + "\"\"";
endmacro;


コピーだけであればCOMの呼び出しでFileSystemObjectを使ったほうが簡単かもしれないです。
例:
#fso = createobject("Scripting.FileSystemObject");
callmethod #fso, "CopyFile", directory+"\\*.hsp", directory+"\\..\\hsp";
callmethod #fso, "CopyFile", directory+"\\*.png", directory+"\\..\\assets";
releaseobject #fso;
endmacro;
[ ]
RE:36377 ファイルコピーNo.36378
sintachi さん 18/03/08 19:19 [ コメントを投稿する ]
  返信、ありがとうございます。
書いてあったとおりにFileSystemObjectを使いました。
見事に自分のやりたかった事が出来ました。
こんな事が出来ないかなと思った事が出来てしまう秀丸エディタがやっぱり止められません。
こういうサポートもしてくださるので本当に感謝しています。
ありがとうございました。
[ ]

[ 新規に投稿する ]