GETDIRゲットディレクトリー関数

本ページには広告が含まれています。

指定したディレクトリのファイル一覧を取得します。

構文
  1. Integer = GETDIR( ディレクトリ, ファイル指定, 不可視ファイルフラグ, 取得順番 )
引数
ディレクトリ (String)必須
ファイル名の取得のディレクトリ
ファイル指定 (String = "")省略可
ワイルドカード(*, ?)によるファイル名指定
\を指定するとディレクトリ名の取得
不可視ファイルフラグ (Boolean = False)省略可
TRUE
不可視ファイルも含める
FALSE
含めない(デフォルト)
取得順番 (Integer = 0)省略可
ファイル並び
0
ファイル名(デフォルト)
1
サイズ
2
作成日
3
更新日
4
アクセス日
戻り値

取得した数を返す (For In 構文にて指定された場合は各要素を返す)

取得した情報は配列変数のGETDIR_FILES[ ] に格納される (配列はゼロから)

引数

取得順番

ファイル並びは自然順(昇順)で取得されます。ファイル名は五十音順、サイズは小さい順、日時は古い順となります。

配列変数

配列変数に格納された要素の出力方法を色々書いておきます。

配列変数に格納された要素は自然順(昇順)で並んでいます。

LENGTH関数で要素数を取得し、0〜(要素数-1)までFOR-TO文で回す。昇順です。

UWSC
FOR i = 0 TO LENGTH(GETDIR_FILES) - 1
	PRINT GETDIR_FILES[i]
NEXT

RESIZE関数で配列の上限値を取得し、FOR-TO文で先頭から昇順で出力します。

UWSC
FOR i = 0 TO RESIZE(GETDIR_FILES)
	PRINT GETDIR_FILES[i]
NEXT

RESIZE関数で要素数を取得し、FOR-TO文で後ろから回すことで、降順で出力します。

UWSC
FOR i = RESIZE(GETDIR_FILES) TO 0 STEP -1
	PRINT GETDIR_FILES[i]
NEXT

FOR-IN文で要素を昇順で出力します。

UWSC
FOR item IN GETDIR_FILES
	PRINT item
NEXT

GETDIR関数 (自作関数)で配列変数の中身を降順にする方法もあります。

UWSC
arrayReverse(GETDIR_FILES)

FOR item IN GETDIR_FILES
	PRINT item
NEXT

ファイル指定

ワイルドカードを使うことによりファイルを絞ることができます。

文字 意味
* 0文字以上の任意の文字列
? 任意の1文字

Excel(*.xls、*.xlsx、*.xlsm)の場合は「*.xls*」と指定します。

あまり正確に機能してなさそうなので、ファイルを削除するときとかは一度ファイル名を出力して確認した方が良いです。

取得順番

ファイル名 昇順

UWSC
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

ファイル名 降順

UWSC
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

サイズ 昇順

UWSC
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

サイズ 降順

UWSC
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

作成日時 昇順

UWSC
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

作成日時 降順

UWSC
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

更新日時 昇順

UWSC
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

更新日時 降順

UWSC
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

アクセス日時 昇順

UWSC
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

アクセス日時 降順

UWSC
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"のファイル一覧を昇順で取得します。

UWSC
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

使い方

デスクトップにある作成日が一番古いファイルを取得します。

UWSC
GETDIR("D:\Desktop\",,, 2)
PRINT GETDIR_FILES[0]

デスクトップにある作成日が一番新しいファイルを取得します。

UWSC
GETDIR("D:\Desktop\",,, 2)
PRINT GETDIR_FILES[RESIZE(GETDIR_FILES)]

プログラム実行例

指定フォルダのJPEGファイル名を出力

D:\Pictures\にあるファイル名が.jpgで終わる(JPEG画像)のファイル名を出力します。

UWSC
FOR i = 0 TO GETDIR("D:\Desktop\Pictures\", "*.jpg") - 1
	PRINT GETDIR_FILES[i]
NEXT
使用関数

指定フォルダにあるディレクトリを出力

D:\Desktop\にあるディレクトリ名を出力します。

UWSC
FOR i = 0 TO GETDIR("D:\Desktop\", "\") - 1
	PRINT GETDIR_FILES[i]
NEXT
使用関数

不可視ファイルの数を取得する

UWSC
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]
使用関数

デスクトップにあるフォルダ一覧を取得

UWSC
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
使用関数

デスクトップのファイル名一覧を取得・出力する

UWSC
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 メソッド
指定したファイルを削除します。