目次
指定したディレクトリのファイル一覧を取得します。
- 構文
- 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]
NEXT
RESIZE関数で配列の上限値を取得し、FOR-TO文で先頭から昇順で出力します。
FOR i = 0 TO RESIZE(GETDIR_FILES)
PRINT GETDIR_FILES[i]
NEXT
RESIZE関数で要素数を取得し、FOR-TO文で後ろから回すことで、降順で出力します。
FOR i = RESIZE(GETDIR_FILES) TO 0 STEP -1
PRINT GETDIR_FILES[i]
NEXT
FOR-IN文で要素を昇順で出力します。
FOR item IN GETDIR_FILES
PRINT item
NEXT
GETDIR関数 (自作関数)で配列変数の中身を降順にする方法もあります。
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
ファイル名 降順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
サイズ 昇順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
サイズ 降順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
作成日時 昇順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
作成日時 降順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
更新日時 昇順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
更新日時 降順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
アクセス日時 昇順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
アクセス日時 降順
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
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
複数の条件指定
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
//////////////////////////////////////////////////
// 【引数】
// arr : 追加される配列(参照引数)
// tmp : 追加する配列
// 【戻り値】
// 追加した後の配列の要素数
//////////////////////////////////////////////////
FUNCTION arrayMerge(Var arr[], tmp[])
FOR n = 0 TO UBound(tmp)
arrayPush(arr, tmp[n])
NEXT
RESULT = UBound(arr)
FEND
//////////////////////////////////////////////////
// 【引数】
// array : 要素を追加する配列(参照引数)
// values : 追加する要素をvalue1から指定
// 【戻り値】
// 処理後の配列の要素の数
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
DIM i = 1
WHILE EVAL("value" + i) <> EMPTY
DIM res = RESIZE(array, UBound(array) + 1)
array[res] = EVAL("value" + i)
i = i + 1
WEND
RESULT = LENGTH(array)
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
使い方
デスクトップにある作成日が一番古いファイルを取得します。
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を取得します。
- Folder.CopyHere メソッド (Shell)
- 1つまたは複数のアイテムをフォルダにコピーします。
- Folder.MoveHere メソッド (Shell)
- 1つまたは複数のアイテムをこのフォルダに移動します。
- FileSystemObject オブジェクト
- FSO.DeleteFile メソッド
- 指定したファイルを削除します。