プロセルピナ
Top
Internet
Mail
Private
Proxy
Capture
Device
Download
Config
and
Words
Online
Help
Online
Home
[BACK]
☞
Top
>
Proserpine Macro
>
Commands
> file list
file listコマンド
Macro Top
|
Variables
|
Constants
|
Commands
|
Ex-Commands
書式
file list:
(Parameters)
パラメータ
dir=
で指定したフォルダにある
key=
のパターンで一致するファイルを、 文字列配列にフルパスで取得します。
検出された件数は
O:count=
で指定した変数に設定されます。
例えば、3件のファイルが検出されるケースで、
O:count=
intl["件数"] と指定していた場合は、 intl["件数"] というローカル整数値変数に 3 の値が設定されます。
dir=
で指定したフォルダが存在しない場合、
O:count=
で指定した変数には 0 が設定されます。 マクロの実行はエラーにはなりません。
toLower
オプションを指定したときは、ファイル名は全て小文字になります。
toUpper
オプションを指定したときは、ファイル名は全て大文字になります。
結果は文字列変数またはHashテーブルに設定されます。
index=
を指定した場合は str[ ] のグローバル文字列配列 に設定されます。
strl.index=
を指定した場合は strl[ ] のローカル文字列配列 に設定されます。
例えば、
index=
10 と指定した場合は、 str[10]、str[11]、str[12]、 … と順番に格納されます。
結果をHashテーブルに設定する場合は
hashTable.Id=
のパラメータでテーブル名を指定します。
index=
や
strl.index=
と同時に指定してもかまいません。
MD5オプション
ファイル名一覧と同時に、ファイルのMD5ハッシュ値の一覧を取得したいときは、
md5Hash.Id=
でHashTableの名前(ID)を指定します。
HashTableのキーにはMD5Hash値を文字列化したものが、 HashTableの値(value)にはファイル名が設定されます。
shortNameオプション
検出されたファイル名を、フルパスで取得するか、それともファイル名だけで取得するかを決めるのが、 shortNameオプションです。
shortNameオプションには次の4つがあります。
hashTable.shortName
index.shortName
md5Hash.shortName
shortName
hashTable.shortNameオプションは、
hashTable.Id=
で指定したHashTableに登録するファイル名を ファイル名だけで設定するときに指定します。
index.shortNameオプションは、
index=
で指定した文字列変数に登録するファイル名を ファイル名だけで設定するときに指定します。
md5Hash.shortNameオプションは、
md5Hash.Id=
で指定したHashTableに登録するファイル名を ファイル名だけで設定するときに指定します。
shortNameオプションは、
hashTable.Id=
で指定したHashTableと
md5Hash.Id=
で指定したHashTableと
index=
で指定した文字列変数に登録するファイル名の 全てを ファイル名だけで設定するときに指定します。
例えば、hashTable.shortNameオプションを指定し、
hashTable.id=
でHashTableを、
index=
で文字列変数を指定するような次の場合、
hashTable.id=
"テーブル" hashTable.shortName
index=
10
idが"テーブル"のHashTableには Image.001.jpg
文字列変数(str[10] 以降)には C:\Work\Test\Image.001.jpg
という感じで設定されます。
ファイルの絞込み (key= 及び regex= オプション)
検出されるファイルの絞込み(フィルタリング)は、
key=
及び
regex=
のオプションで指定します。
key=
の指定を省略した場合は、
key=
"*.*" を指定したのと同じです。
key=
で指定した文字列は、コマンドプロンプトからdirコマンドを実行するときのパラメータと 同じように作用します。
例えば、
key=
"*.url" と指定した場合、拡張子が url で始まるファイルが一致します (aaa.url や bbb
.urlp
が一致します)。
regex=
を指定した場合、
key=
で絞り込んだファイルを更に正規表現で絞り込みます。
例えば、
key=
"*.url"
regex=
"urlp$"
と指定した場合、拡張子が urlp なファイルのみが検出されます。
regex=
に一致するファイルを除外する場合は、
regex.match=
"remove"
のオプションを追加します。
このオプションを指定すると、
key=
で絞り込んだファイル群に対し
regex=
の正規表現を適用し、一致したファイルを除外します。
次のサンプルは 「お気に入り」フォルダ(
Dir.Favorites
で表現可能) にあるインターネットショートカットの数を file listコマンド で数えるものです。
4つの file listコマンド のうち、最初の2つは
regex=
オプションを指定していませんが、後の2件については末尾一致の正規表現を指定しています。
:Test{ file list: dir=Dir.Favorites subDir=false index="iShortcut" key="*.urlp" O:Count=int["iShortcut数"] put: "key=*.urlp: " int["iShortcut数"] file list: dir=Dir.Favorites subDir=false index="iShortcut" key="*.url" O:Count=int["iShortcut数"] put: "key=*.url: " int["iShortcut数"] put: "" file list: dir=Dir.Favorites subDir=false index="iShortcut" key="*.urlp" regex="urlp$" O:Count=int["iShortcut数"] put: "regex追加 .urlp: " int["iShortcut数"] file list: dir=Dir.Favorites subDir=false index="iShortcut" key="*.url" regex="url$" O:Count=int["iShortcut数"] put: "regex追加 .url: " int["iShortcut数"] end: }
「お気に入り」フォルダに、 urlpファイル(拡張インターネットショートカット) が10件、 urlファイル(インターネットショートカット) が1件、 合計11件のインターネットショートカットがあるとします。
この場合、実行すると次のような表示になります。
key=*.urlp: 10 key=*.url: 11 regex追加 .urlp: 10 regex追加 .url: 1
記述例
例1:
例2:
【
例3
】 次の例は、お気に入りフォルダのインタネットショートカットの一覧を表示する例です。
次のサンプルコードをメモ帳モードで開いた
テキストフォーム
にコピー&ペーストして、
テストモード
で実行させることで コマンド動作を確認することができます。
(実行は
テキストフォーム
のメニューから 「
M
acro」→「
R
un - TestMode」 )
:Sample{ file list: dir=Dir.Favorites key="*.url" toUpper index=100 O:count=int["数"] put: "インターネットショートカットの数=" int["数"] "\r\n" intl[10]=100; intl[11]=100 int["数"] while (intl[10] < intl[11]) { put: intl[10] " --- " str[intl[10]] culc: intl[10]++ } }
お気に入りフォルダのショートカット一覧を取得する例
上記例では
toUpper
オプション を指定しているので、ファイル名は全て大文字で表示されます。
【
例4
】 次のサンプルコードはimagesフォルダの一覧を取得して、その一部を表示するものです。
上記【
例1
】と同じように、 メモ帳モードで開いた
テキストフォーム
にコピー&ペーストして、 実行させることができます。
:a{ file list: dir="{{GTMAIL_HOME}}\\ctrl\\images" strl.index=3 O:count=int["数"]; put: "ファイル数=" int["数"]; intl[10]=0; while (intl[10] < 20) { put: intl[10] " --- " strl[intl[10]] culc: intl[10]++ } }
フォルダ {{GTMAIL_HOME}}\\ctrl\\images のファイル一覧を取得する例
ファイル数=55 0 --- 1 --- 2 --- 3 --- C:\GTmail\ctrl\images\0326-01b.jpg 4 --- C:\GTmail\ctrl\images\0326-02b.jpg 5 --- C:\GTmail\ctrl\images\0326-04b.jpg 6 --- C:\GTmail\ctrl\images\0326-05b.jpg 7 --- C:\GTmail\ctrl\images\0326-06b.jpg 8 --- C:GTmail\ctrl\images\0326-07b.jpg 9 --- C:\GTmail\ctrl\images\0326-08b.jpg 10 --- C:\GTmail\ctrl\images\0326-10b.jpg 11 --- C:\GTmail\ctrl\images\ada01b.jpg 12 --- C:\GTmail\ctrl\images\ada02b.jpg 13 --- C:\GTmail\ctrl\images\ada03b.jpg 14 --- C:\GTmail\ctrl\images\ada04b.jpg 15 --- C:\GTmail\ctrl\images\hasedera-b.jpg 16 --- C:\GTmail\ctrl\images\im0-b.jpg 17 --- C:\GTmail\ctrl\images\im1-b.jpg 18 --- C:\GTmail\ctrl\images\im10-b.jpg 19 --- C:\GTmail\ctrl\images\im11-b.jpg
上記例の実行結果 (strl.indexで3が設定されていることに注意)
subDir=true
を指定した場合は、配下のフォルダにあるファイルも検出します。
(
subDir=
の指定は version1.05 以降でサポートされたパラメータです)
indexでprefix文字列を指定する
マクロヴァージョン
20090101以降は、indexを prefix文字列 で指定することもできます。
例えば、 index="ファイル" と指定した場合、検出されたファイルは str["ファイル.0"] 、 str["ファイル.1"] 、 str["ファイル.2"] ... と、0から順に設定されていきます。
同じように、 strl.index="ファイル" と指定した場合は、 strl["ファイル.0"] 、 strl["ファイル.1"] 、 strl["ファイル.2"] と設定されます。
【
例
】 次のサンプルコードをメモ帳モードで開いた
テキストフォーム
にコピー&ペーストして、
テストモード
で実行させることで コマンド動作を確認することができます。
(実行は
テキストフォーム
のメニューから 「
M
acro」→「
R
un - TestMode」 )
:a{ file list: dir="{{GTMAIL_HOME}}\\ctrl\\images" strl.index="結果" O:count=int["数"]; put: "ファイル数=" int["数"]; intl[10]=0; while (intl[10] < 20) { strl["work"]="結果." intl[10] put: intl[10] " --- " strl["work"] " --- " strl[strl["work"]] culc: intl[10]++ } }
フォルダ {{GTMAIL_HOME}}\\ctrl\\images のファイル一覧を取得する例
ファイル数=55 0 --- 結果.0 --- F:\work\GTmail\ctrl\images\0326-01b.jpg 1 --- 結果.1 --- F:\work\GTmail\ctrl\images\0326-02b.jpg 2 --- 結果.2 --- F:\work\GTmail\ctrl\images\0326-04b.jpg 3 --- 結果.3 --- F:\work\GTmail\ctrl\images\0326-05b.jpg 4 --- 結果.4 --- F:\work\GTmail\ctrl\images\0326-06b.jpg 5 --- 結果.5 --- F:\work\GTmail\ctrl\images\0326-07b.jpg 6 --- 結果.6 --- F:\work\GTmail\ctrl\images\0326-08b.jpg 7 --- 結果.7 --- F:\work\GTmail\ctrl\images\0326-10b.jpg 8 --- 結果.8 --- F:\work\GTmail\ctrl\images\ada01b.jpg 9 --- 結果.9 --- F:\work\GTmail\ctrl\images\ada02b.jpg 10 --- 結果.10 --- F:\work\GTmail\ctrl\images\ada03b.jpg 11 --- 結果.11 --- F:\work\GTmail\ctrl\images\ada04b.jpg 12 --- 結果.12 --- F:\work\GTmail\ctrl\images\hasedera-b.jpg 13 --- 結果.13 --- F:\work\GTmail\ctrl\images\im0-b.jpg 14 --- 結果.14 --- F:\work\GTmail\ctrl\images\im1-b.jpg 15 --- 結果.15 --- F:\work\GTmail\ctrl\images\im10-b.jpg 16 --- 結果.16 --- F:\work\GTmail\ctrl\images\im11-b.jpg 17 --- 結果.17 --- F:\work\GTmail\ctrl\images\im12.jpg 18 --- 結果.18 --- F:\work\GTmail\ctrl\images\im13.jpg 19 --- 結果.19 --- F:\work\GTmail\ctrl\images\im14-b.jpg
上記例の実行結果
例
dir=
の指定には、
ファイル名メタ定義
を使用することができます。 次の例では、
ファイル名メタ定義
を使ってWindows環境変数を参照し、 Windowsの system32フォルダにある 全ての.exeファイルのフルパスを取得しています。
:Start { file list: dir="{{windir}}\\system32" key="*.exe" index=0 O:count=int["exe_count"]; while (int[0] < int["exe_count"]) { put: value=str[int[0]]; culc: int[0]++; } end: }
system32フォルダにあるexeファイルを表示
【コピペで確認】
上記のサンプルコードは メモ帳モードで開いた
テキストフォーム
にコピー&ペーストして、
テストモード
実行
で 動作確認することができます。
具体的なマクロの例
次の例は、 {{GTMAIL_HOME}}\ctrl\macro
フォルダ
にあるマクロ、「ファイル移動 フォルダ指定.txt」です。
UTF-8 // フォルダ内の特定ファイルを一斉移動 // // input[0]で指定されたフォルダで、 // input[1]で指定したパターンに一致するファイルを // input[2]に指定したフォルダに移動する :Main{ if (input[0].isDir == "false") { put: value="Not Dir!\r\n" input[0]; end: } input[2]=input[2].TrimEnd("\\"); if (input[2].Length < 1) { put: value="移動先のフォルダが指定されていません!\r\n"; end: } file list: dir=input[0] key=input[1] strl.index="file" O:count=intl["count"]; put: value="count=" intl["count"] " files."; intl[10]=0; while (intl[10] < intl["count"]) { strl["key"]="file."; strl["key"]+=intl[10]; strl["dest"]=input[2]; strl["dest"]+="\\"; strl["dest"]+=strl[strl["key"]].FilenameShort; file rename: src=strl[strl["key"]] to=strl["dest"]; //put: value=strl["dest"]; culc: intl[10]++; } end: }
マクロ「ファイル移動 フォルダ指定.txt」
【簡単な説明】
file listコマンドで strl.index="file" が指定されているので、検出されたファイルのフルパスは、 strl["file.0"] 以降に設定されます。
whileループ内で、 "file.0" や "file.1" などの文字列は一旦 strl["key"] に設定され、file listコマンドで格納されたファイルのフルパスには その変数を使って strl[strl["key"]] という形式でアクセスしています。
Hashテーブルに値を設定
パラメータ
hashTable.id=
でHashテーブルの名前を指定したときは、 Hashテーブルにファイル一覧が設定されます。
Hashテーブルの key にファイル名、 value にファイルサイズが設定されます。
key に設定されるファイル名はフルパスです。ディレクトリ部を除外したファイル名で設定したいときには
hashTable.shortName
のオプションを指定します。
次の例はimagesフォルダのファイル一覧をHashテーブルに設定するものです。 Shortという名前のHashテーブルにはディレクトリ部を除外したファイル名で、 Longという名前のHashテーブルにはフルパスで keyを設定しています。
この例では、Hashテーブルの内容を
HashTable.DumpBoth
コマンド
でファイルにダンプして確認しています (keyとvalueの区切りは ☸☸ の記号)。 ここでは、 id="Short" のHashテーブルは fileList_short.txt 、 id="Long" のHashテーブルは fileList_long.txt にダンプしています。
:Sample{ file list: dir="{{GTMAIL_HOME}}\\ctrl\\images" hashTable.id="Short" hashTable.shortName key="*.jpg"; file list: dir="{{GTMAIL_HOME}}\\ctrl\\images" hashTable.id="Long" key="*.jpg"; strl["f"]="fileList_short.txt"; HashTable.DumpBoth: id="Short" value.as="int" dir=Dir.DeskTop file=strl["f"] O:dest=strl[10]; strl["f"]="fileList_long.txt"; HashTable.DumpBoth: id="Long" value.as="int" dir=Dir.DeskTop file=strl["f"] O:dest=strl[10]; end: }
【コピペで確認】
上記のサンプルコードは メモ帳モードで開いた
テキストフォーム
にコピー&ペーストして、
テストモード
実行
で 動作確認することができます。
im28-b.jpg☸☸13484 0326-10b.jpg☸☸20480 im37-b.jpg☸☸30656 0326-01b.jpg☸☸12626 0326-04b.jpg☸☸10853 im36-b.jpg☸☸26875 ada02b.jpg☸☸57496 im34-b.jpg☸☸17365 im11-b.jpg☸☸32155 0326-06b.jpg☸☸9884 ada04b.jpg☸☸79154 im10-b.jpg☸☸30914 im20-b.jpg☸☸49768 im17-b.jpg☸☸46666 im39-b.jpg☸☸20009 ada01b.jpg☸☸48465 0326-07b.jpg☸☸21936 im8-b.jpg☸☸10581 im23-b.jpg☸☸17949 im9-b.jpg☸☸17997 im29-b.jpg☸☸48950 im15-b.jpg☸☸19266 0326-02b.jpg☸☸34292 im26-b.jpg☸☸13687 im6-b.jpg☸☸33234 im18-b.jpg☸☸25907 ada03b.jpg☸☸31134 im2-b.jpg☸☸17179 im5-b.jpg☸☸22513 0326-05b.jpg☸☸41418 0326-08b.jpg☸☸44966 im3-b.jpg☸☸20999 im39.jpg☸☸28807 im14-b.jpg☸☸21730 im0-b.jpg☸☸77916 im32-b.jpg☸☸23998 im1-b.jpg☸☸5895 ルリマツリ_w600h400.jpg☸☸22891 im33-b.jpg☸☸9536 im38-b.jpg☸☸18001 im7-b.jpg☸☸22791 im21-b.jpg☸☸16264 im13.jpg☸☸20535 im24-b.jpg☸☸10577 im4-b.jpg☸☸43362 im16-b.jpg☸☸13388 im27-b.jpg☸☸9772 im22-b.jpg☸☸36626 im30-b.jpg☸☸26093 im12.jpg☸☸45682 hasedera-b.jpg☸☸30869 im25-b.jpg☸☸13370 im19-b.jpg☸☸30507 im35-b.jpg☸☸12554
fileList_short.txt の内容 (サンプル)
C:\GTMAIL_HOME\ctrl\images\im37-b.jpg☸☸30656 C:\GTMAIL_HOME\ctrl\images\im7-b.jpg☸☸22791 C:\GTMAIL_HOME\ctrl\images\im6-b.jpg☸☸33234 C:\GTMAIL_HOME\ctrl\images\im22-b.jpg☸☸36626 C:\GTMAIL_HOME\ctrl\images\ada02b.jpg☸☸57496 C:\GTMAIL_HOME\ctrl\images\im39-b.jpg☸☸20009 C:\GTMAIL_HOME\ctrl\images\im23-b.jpg☸☸17949 C:\GTMAIL_HOME\ctrl\images\ada03b.jpg☸☸31134 C:\GTMAIL_HOME\ctrl\images\im2-b.jpg☸☸17179 C:\GTMAIL_HOME\ctrl\images\0326-10b.jpg☸☸20480 C:\GTMAIL_HOME\ctrl\images\0326-08b.jpg☸☸44966 C:\GTMAIL_HOME\ctrl\images\hasedera-b.jpg☸☸30869 C:\GTMAIL_HOME\ctrl\images\im19-b.jpg☸☸30507 C:\GTMAIL_HOME\ctrl\images\im1-b.jpg☸☸5895 C:\GTMAIL_HOME\ctrl\images\im5-b.jpg☸☸22513 C:\GTMAIL_HOME\ctrl\images\ada04b.jpg☸☸79154 C:\GTMAIL_HOME\ctrl\images\0326-07b.jpg☸☸21936 C:\GTMAIL_HOME\ctrl\images\im9-b.jpg☸☸17997 C:\GTMAIL_HOME\ctrl\images\im14-b.jpg☸☸21730 C:\GTMAIL_HOME\ctrl\images\0326-04b.jpg☸☸10853 C:\GTMAIL_HOME\ctrl\images\0326-02b.jpg☸☸34292 C:\GTMAIL_HOME\ctrl\images\im15-b.jpg☸☸19266 C:\GTMAIL_HOME\ctrl\images\ルリマツリ_w600h400.jpg☸☸22891 C:\GTMAIL_HOME\ctrl\images\0326-05b.jpg☸☸41418 C:\GTMAIL_HOME\ctrl\images\im8-b.jpg☸☸10581 C:\GTMAIL_HOME\ctrl\images\im28-b.jpg☸☸13484 C:\GTMAIL_HOME\ctrl\images\im26-b.jpg☸☸13687 C:\GTMAIL_HOME\ctrl\images\im20-b.jpg☸☸49768 C:\GTMAIL_HOME\ctrl\images\im18-b.jpg☸☸25907 C:\GTMAIL_HOME\ctrl\images\im24-b.jpg☸☸10577 C:\GTMAIL_HOME\ctrl\images\0326-01b.jpg☸☸12626 C:\GTMAIL_HOME\ctrl\images\im27-b.jpg☸☸9772 C:\GTMAIL_HOME\ctrl\images\im30-b.jpg☸☸26093 C:\GTMAIL_HOME\ctrl\images\im3-b.jpg☸☸20999 C:\GTMAIL_HOME\ctrl\images\ada01b.jpg☸☸48465 C:\GTMAIL_HOME\ctrl\images\0326-06b.jpg☸☸9884 C:\GTMAIL_HOME\ctrl\images\im35-b.jpg☸☸12554 C:\GTMAIL_HOME\ctrl\images\im21-b.jpg☸☸16264 C:\GTMAIL_HOME\ctrl\images\im36-b.jpg☸☸26875 C:\GTMAIL_HOME\ctrl\images\im4-b.jpg☸☸43362 C:\GTMAIL_HOME\ctrl\images\im13.jpg☸☸20535 C:\GTMAIL_HOME\ctrl\images\im32-b.jpg☸☸23998 C:\GTMAIL_HOME\ctrl\images\im33-b.jpg☸☸9536 C:\GTMAIL_HOME\ctrl\images\im29-b.jpg☸☸48950 C:\GTMAIL_HOME\ctrl\images\im38-b.jpg☸☸18001 C:\GTMAIL_HOME\ctrl\images\im12.jpg☸☸45682 C:\GTMAIL_HOME\ctrl\images\im10-b.jpg☸☸30914 C:\GTMAIL_HOME\ctrl\images\im39.jpg☸☸28807 C:\GTMAIL_HOME\ctrl\images\im16-b.jpg☸☸13388 C:\GTMAIL_HOME\ctrl\images\im11-b.jpg☸☸32155 C:\GTMAIL_HOME\ctrl\images\im0-b.jpg☸☸77916 C:\GTMAIL_HOME\ctrl\images\im17-b.jpg☸☸46666 C:\GTMAIL_HOME\ctrl\images\im25-b.jpg☸☸13370 C:\GTMAIL_HOME\ctrl\images\im34-b.jpg☸☸17365
fileList_long.txt の内容 (サンプル)
例: 指定したフォルダの.bmpファイルを全て.jpgに変換する
デスクトップにある Work のフォルダにある .bmpファイル の一覧を
file list
コマンド
で取得し、各.bmpファイルを
Ex:Img.SavePartial
コマンド
でjpegファイルに変換して保存する例です。
:Start { str["dir"]=Dir.Desktop "\\Work" file list: dir=str["dir"] key="*.bmp" strl.index=100 O:count=int["bmp数"] put: str["dir"] "の .bmpファイル数: " int["bmp数"] if (int["bmp数"] < 1) { end: } intl["idx"]=100 intl["max"]=100 int["bmp数"] while (intl["idx"] < intl["max"]) { strl["file"]=strl[intl["idx"]] strl["tmp"]=strl["file"].FilenameShort intl[10]=strl["tmp"].Length -3 strl["tmp"]=strl["tmp"].Substring0(intl[10]) strl["jpg"]=strl["file"].FilenameDir "\\" strl["tmp"] "jpg" Ex:Img.SavePartial: src=strl["file"] dest=strl["jpg"] O:rslt=strl["rs"] quality=100 put: strl["jpg"] " " strl["rs"] culc: intl["idx"]++ } end: }
[BACK]
プロセルピナ