目次
指定したディレクトリのファイル一覧を取得します。
- 構文
- Integer = GETDIR( ディレクトリ, ファイル指定, 不可視ファイルフラグ, 取得順番 )
- 引数
- ディレクトリ (String)必須
- ファイル名の取得のディレクトリ
- ファイル指定 (String = "")省略可
- ワイルドカード(*, ?)によるファイル名指定
\を指定するとディレクトリ名の取得 - 不可視ファイルフラグ (Boolean = False)省略可
- TRUE
- 不可視ファイルも含める
- FALSE
- 含めない(デフォルト)
- 取得順番 (Integer = 0)省略可
- ファイル並び
- 0
- ファイル名(デフォルト)
- 1
- サイズ
- 2
- 作成日
- 3
- 更新日
- 4
- アクセス日
- 戻り値
取得した数を返す (For In 構文にて指定された場合は各要素を返す)
取得した情報は配列変数のGETDIR_FILES[ ] に格納される (配列はゼロから)
引数
取得順番
ファイル並びは自然順(昇順)で取得されます。ファイル名は五十音順、サイズは小さい順、日時は古い順となります。
配列変数
配列変数に格納された要素の出力方法を色々書いておきます。
配列変数に格納された要素は自然順(昇順)で並んでいます。
LENGTH関数で要素数を取得し、0〜(要素数-1)までFOR-TO文で回す。昇順です。
FOR i = 0 TO LENGTH(GETDIR_FILES) - 1
PRINT GETDIR_FILES[i]
NEXTRESIZE関数で配列の上限値を取得し、FOR-TO文で先頭から昇順で出力します。
FOR i = 0 TO RESIZE(GETDIR_FILES)
PRINT GETDIR_FILES[i]
NEXTRESIZE関数で要素数を取得し、FOR-TO文で後ろから回すことで、降順で出力します。
FOR i = RESIZE(GETDIR_FILES) TO 0 STEP -1
PRINT GETDIR_FILES[i]
NEXTFOR-IN文で要素を昇順で出力します。
FOR item IN GETDIR_FILES
PRINT item
NEXTGETDIR関数 (自作関数)で配列変数の中身を降順にする方法もあります。
arrayReverse(GETDIR_FILES)
FOR item IN GETDIR_FILES
PRINT item
NEXTファイル指定
ワイルドカードを使うことによりファイルを絞ることができます。
| 文字 | 意味 |
|---|---|
| * | 0文字以上の任意の文字列 |
| ? | 任意の1文字 |
Excel(*.xls、*.xlsx、*.xlsm)の場合は「*.xls*」と指定します。
あまり正確に機能してなさそうなので、ファイルを削除するときとかは一度ファイル名を出力して確認した方が良いです。
取得順番
ファイル名 昇順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(filenames, QSRT_NATURALA, sizes, createTimes, updateTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXTファイル名 降順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(filenames, QSRT_NATURALD, sizes, createTimes, updateTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXTサイズ 昇順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(sizes, QSRT_NATURALA, filenames, createTimes, updateTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXTサイズ 降順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(sizes, QSRT_NATURALD, filenames, createTimes, updateTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXT作成日時 昇順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(createTimes, QSRT_NATURALA, filenames, sizes, updateTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXT作成日時 降順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(createTimes, QSRT_NATURALD, filenames, sizes, updateTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXT更新日時 昇順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(updateTimes, QSRT_NATURALA, filenames, sizes, createTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXT更新日時 降順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(updateTimes, QSRT_NATURALD, filenames, sizes, createTimes, accessTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXTアクセス日時 昇順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(accessTimes, QSRT_NATURALA, filenames, sizes, createTimes, updateTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXTアクセス日時 降順
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM folderspec = "D:\Desktop\"
DIM filenames[-1]
DIM sizes[-1]
DIM createTimes[-1]
DIM updateTimes[-1]
DIM accessTimes[-1]
FOR filename IN GETDIR(folderspec)
arrayPush(filenames, filename)
WITH FSO.GetFile(folderspec + filename)
arrayPush(sizes, .Size)
arrayPush(createTimes, .DateCreated)
arrayPush(updateTimes, .DateLastModified)
arrayPush(accessTimes, .DateLastAccessed)
ENDWITH
NEXT
QSORT(accessTimes, QSRT_NATURALD, filenames, sizes, createTimes, updateTimes)
FOR i = 0 TO UBound(filenames)
PRINT filenames[i] + "," + sizes[i] + "," + createTimes[i] + "," + updateTimes[i] + "," + accessTimes[i]
NEXT複数の条件指定
GETDIRを繰り返し実行し、配列に結合していきます。以下は拡張子が".txt"か".js"のファイル一覧を昇順で取得します。
DIM array[-1]
DIM folderspec = "D:\Desktop\"
DIM files[] = "*.txt", "*.js"
FOR file IN files
GETDIR(folderspec, file)
arrayMerge(array, GETDIR_FILES)
NEXT
QSORT(array, QSRT_NATURALA)
FOR item IN array
PRINT item
NEXT使い方
デスクトップにある作成日が一番古いファイルを取得します。
GETDIR("D:\Desktop\",,, 2)
PRINT GETDIR_FILES[0]デスクトップにある作成日が一番新しいファイルを取得します。
GETDIR("D:\Desktop\",,, 2)
PRINT GETDIR_FILES[RESIZE(GETDIR_FILES)]プログラム実行例
指定フォルダのJPEGファイル名を出力
D:\Pictures\にあるファイル名が.jpgで終わる(JPEG画像)のファイル名を出力します。
FOR i = 0 TO GETDIR("D:\Desktop\Pictures\", "*.jpg") - 1
PRINT GETDIR_FILES[i]
NEXT指定フォルダにあるディレクトリを出力
D:\Desktop\にあるディレクトリ名を出力します。
FOR i = 0 TO GETDIR("D:\Desktop\", "\") - 1
PRINT GETDIR_FILES[i]
NEXT不可視ファイルの数を取得する
CONST ssfDESKTOP = 0
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfDESKTOP)
DIM path = Folder.Self.Path
DIM num[1]
GETDIR(path)
num[0] = LENGTH(GETDIR_FILES)
GETDIR(path,, TRUE)
num[1] = LENGTH(GETDIR_FILES)
PRINT num[1] - num[0]デスクトップにあるフォルダ一覧を取得
CONST ssfDESKTOP = 0
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfDESKTOP)
DIM path = Folder.Self.Path
GETDIR(path, "\")
FOR item IN GETDIR_FILES
PRINT item
NEXTデスクトップのファイル名一覧を取得・出力する
CONST ssfDESKTOP = 0
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfDESKTOP)
PRINT "ファイルの数<#TAB>" + GETDIR(Folder.Self.Path)
PRINT "----------"
FOR Item IN GETDIR_FILES
PRINT Item
NEXT関連記事
- File.Type プロパティ (FSO)
- 指定したファイルの種類を返します。
- DELETEFILE関数 (スクリプト関数)
- テキストファイルを削除します。
- FCLOSE関数 (スクリプト関数)
- テキストファイルを閉じます。
- FDELLINE関数 (スクリプト関数)
- テキストファイルの指定行を削除します。
- FGET関数 (スクリプト関数)
- テキストファイルの読み込みを行います。
- FOPEN関数 (スクリプト関数)
- テキストファイルを開き、ファイルIDを取得します。
- FPUT関数 (スクリプト関数)
- テキストファイルの書き込みを行います。
- Folder.CopyHere メソッド (Shell)
- 1つまたは複数のアイテムをフォルダにコピーします。
- Folder.MoveHere メソッド (Shell)
- 1つまたは複数のアイテムをこのフォルダに移動します。
- FileSystemObject オブジェクト
