プロセルピナ
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件については末尾一致の正規表現を指定しています。



「お気に入り」フォルダに、 urlpファイル(拡張インターネットショートカット) が10件、 urlファイル(インターネットショートカット) が1件、 合計11件のインターネットショートカットがあるとします。
この場合、実行すると次のような表示になります。



 

記述例


例1:

例2:


例3】 次の例は、お気に入りフォルダのインタネットショートカットの一覧を表示する例です。

次のサンプルコードをメモ帳モードで開いたテキストフォームにコピー&ペーストして、 テストモード で実行させることで コマンド動作を確認することができます。
(実行はテキストフォームのメニューから 「Macro」→「Run - TestMode」 )


お気に入りフォルダのショートカット一覧を取得する例

上記例では toUpperオプション を指定しているので、ファイル名は全て大文字で表示されます。


例4】 次のサンプルコードはimagesフォルダの一覧を取得して、その一部を表示するものです。
上記【例1】と同じように、 メモ帳モードで開いたテキストフォームにコピー&ペーストして、 実行させることができます。


フォルダ {{GTMAIL_HOME}}\\ctrl\\images のファイル一覧を取得する例


上記例の実行結果 (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"] と設定されます。

】 次のサンプルコードをメモ帳モードで開いたテキストフォームにコピー&ペーストして、 テストモード で実行させることで コマンド動作を確認することができます。
(実行はテキストフォームのメニューから 「Macro」→「Run - TestMode」 )


フォルダ {{GTMAIL_HOME}}\\ctrl\\images のファイル一覧を取得する例


上記例の実行結果

 


dir=の指定には、ファイル名メタ定義を使用することができます。 次の例では、ファイル名メタ定義を使ってWindows環境変数を参照し、 Windowsの system32フォルダにある 全ての.exeファイルのフルパスを取得しています。


system32フォルダにあるexeファイルを表示

【コピペで確認】 上記のサンプルコードは メモ帳モードで開いたテキストフォームにコピー&ペーストして、 テストモード実行で 動作確認することができます。

 

具体的なマクロの例


次の例は、 {{GTMAIL_HOME}}\ctrl\macroフォルダ にあるマクロ、「ファイル移動 フォルダ指定.txt」です。


マクロ「ファイル移動 フォルダ指定.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 にダンプしています。



【コピペで確認】 上記のサンプルコードは メモ帳モードで開いたテキストフォームにコピー&ペーストして、 テストモード実行で 動作確認することができます。


fileList_short.txt の内容 (サンプル)


fileList_long.txt の内容 (サンプル)


 

例: 指定したフォルダの.bmpファイルを全て.jpgに変換する


デスクトップにある Work のフォルダにある .bmpファイル の一覧を file listコマンド で取得し、各.bmpファイルを Ex:Img.SavePartialコマンド でjpegファイルに変換して保存する例です。




[BACK]
プロセルピナ