ファイルコピー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を使いました。
見事に自分のやりたかった事が出来ました。
こんな事が出来ないかなと思った事が出来てしまう秀丸エディタがやっぱり止められ
ません。
こういうサポートもしてくださるので本当に感謝しています。
ありがとうございました。

[ ]