マクロ フォルダ内のJPEG画像の数を調べNo.30364
purapura さん 11/09/28 20:40
 
秀丸エディタのマクロでフォルダに入っているJPEG画像の数を調べたいと思います。

ファイル名に拡張子「.jpg」が付いたファイルを検索して、その検索結果を数で返し
てくれる関数があればよいのですが、ヘルプで調べたところ、そういったものはなさ
そうです。

どのようにすれば、JPEG画像の数を調べてマクロ上で利用することができるのでしょ
うか?

[ ]
RE:30364 マクロ フォルダ内のJPEG画像のNo.30368
IKKI さん 11/09/29 00:44
 
purapuraさん、こんにちは。ユーザの IKKI です。

> 秀丸エディタのマクロでフォルダに入っているJPEG画像の数を調べたいと思います。

数を調べることが最終目的なら、次のマクロでできます。
//--------------------------------------
newfile;
run getenv("ComSpec") + " /c dir /b *.jpg > con";
message str(linecount2 - 1);
//--------------------------------------

最終目的が他にあるなら、他の方法を考えた方がいいと思います。

田楽 DLL を使う方法の例:
http://mobitan.org/hm/misc/Album.mac

COM を使う方法:
http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/230_Com.html
http://msdn.microsoft.com/ja-jp/library/cc428071.aspx

秀丸エディタ v8.11β8 + HMJRE.DLL v3.41

[ ]
RE:30368 マクロ フォルダ内のJPEG画像のNo.30376
purapura さん 11/09/29 12:32
 
IKKIさん、ご回答ありがとうございます。

早速、下記のように試してみたのですが正しく動作しません。
ファイルを検索する場所を正しく指定できていないようです。
ご教示いただければ幸いです。

また、引数の「/c」はどういった意味なのでしょうか?
ComSpecにどういった引数があるのか調べてみたのですが、分かりませんでした。こ
ちらもお教えいただければ助かります。


//--------------------------------------
$fpath = "E:\\EPUB\\temp\\content";
newfile;
run getenv("ComSpec") + " /c dir /b " + $fpath + "\\*.jpg" + " > con";
message str(linecount2 - 1);
//--------------------------------------

[ ]
RE:30376 マクロ フォルダ内のJPEG画像のNo.30380
秀丸担当 さん 11/09/29 13:32
 

>早速、下記のように試してみたのですが正しく動作しません。
>ファイルを検索する場所を正しく指定できていないようです。
>ご教示いただければ幸いです。

同じフォルダを作成して、a.jpgとb.jpgの2つのファイルを置いてマクロを実行
してしたところでは、「a.jpg」「b.jpg」と2行出力されて、メッセージボック
スは「2」と表示されました。

フォルダ内のファイルを空にして実行されたところでは、「ファイルが見つかり
ません」と1行出力されて、メッセージボックスは「1」と表示されました。

具体的なファイルの存在の状態と、具体的にどのようなことが起きているかがわ
かると何かしらコメントできると思います。

>また、引数の「/c」はどういった意味なのでしょうか?
>ComSpecにどういった引数があるのか調べてみたのですが、分かりませんでした。こ
>ちらもお教えいただければ助かります。

環境変数ComSpecは最近のWindowsではcmd.exeを表しています。
コマンドプロンプトで cmd.exe /? と入力するとオプションの説明が出てくると
思います。

[ ]
RE:30376 マクロ フォルダ内のJPEG画像のNo.30382
IKKI さん 11/09/29 14:05
 
purapuraさん、こんにちは。ユーザの IKKI です。

> 早速、下記のように試してみたのですが正しく動作しません。
> ファイルを検索する場所を正しく指定できていないようです。
こちらで $fpath を手元のフォルダに書き換えて動かしたところ、うまく動きます。
もしかして本当はパスにスペースが含まれていたりしませんか?

> また、引数の「/c」はどういった意味なのでしょうか?
cmd.exe の引数です。
コマンドプロンプトを開いて cmd.exe /? でヘルプが表示されます。

# Win9x 系の場合は「cmd.exe」を「command.com」に読み替えてください。
# getenv("ComSpec") は環境に応じてどちらかを返します。

[ ]
RE:30376 解決です。ありがとうございましNo.30383
purapura さん 11/09/29 14:38
 
秀丸担当さん、IKKIさん、ご回答ありがとうございます。

原因が分かりました。
パスの指定を間違えておりました。
単純なミスでした。
誠に申し訳ありません。
何度も確認したつもりだったのですが…。

今回、マクロからコマンドプロンプトを起動して
色々とできることを分かり大変勉強になりました。
マクロを活用できる場が広がりそうです。

この度は誠にありがとうございましたm(_ _)m

[ ]