フォルダ内のファイル一覧を取得する方法

フォルダ内のファイル一覧を取得するにはGETDIR関数を利用します。

取得したファイル名一覧は変数配列GETDIR_FILESに格納されます。

ファイル名の一部を指定して、一致するファイル一覧を取得することもできます。

同様に拡張子を指定して一致したファイルの一覧を取得することもできます。

 

フォルダ内のファイル一覧を取得するサンプル

uwscの文字列を含んだファイルをuwscのフォルダから取得します。

n = GETDIR(GET_UWSC_DIR, "*uwsc*", TRUE, 0) // UWSCのフォルダを指定
PRINT n + "個のファイルが見つかりました"
FOR i = 0 TO (LENGTH(GETDIR_FILES) - 1)
 PRINT GETDIR_FILES[i]
NEXT

フォルダ内のファイル一覧を取得する方法実行結果

 

GETDIR関数リファレンス

GETDIR関数のリファレンスをマニュアルから転載します。

戻値 = GETDIR( ディレクトリ, [ファイル指定, 不可視ファイルフラグ, 取得順番] )
引数
 ディレクトリ: ファイル名の取得のディレクトリ
 ファイル指定: ワイルドカード(*, ?) によるファイル名指定
         "\" を指定するとディレクトリ名の取得
 不可視ファイルフラグ: TRUE:不可視ファイルも含める、 FALSE:含めない(デフォルト)
 取得順番: ファイル並び 0:ファイル名(デフォルト)、1:サイズ、2:作成日、3:更新日、4:アクセス日
戻値
 ゲットした数を返す
 取得した情報は配列変数の GETDIR_FILES[ ] に格納される (配列はゼロから)

 

INIファイルを利用して設定を読み込む方法

INIファイルを利用して設定を読み込むにはREADINI関数を利用します。

WRITEINI関数を利用しINIファイルに書き込み、そのINIファイルを読み込むためにREADINI関数を利用します。

デフォルトではスクリプトと同名のINIファイルが対象となります。

 

INIファイルを利用して設定を読み込むサンプル

INIファイルを利用して実行回数を記録しています。

INIファイルが存在しているかチェックし、存在していなければ初回実行とみなしています。

fileName = REPLACE(GET_UWSC_NAME, ".uws", ".ini") // 実行中のスクリプトのファイル名を取得し、拡張子を書き換える
flag = FOPEN(fileName, F_EXISTS) // ファイルの存在チェックモード
IFB flag
 n = READINI("設定", "実行回数") // 実行回数を読み込む
 n = n + 1
 PRINT n + "回目の実行です"
 WRITEINI("設定", "実行回数", n) // 実行回数を書き込む
ELSE
 PRINT "ファイルが存在しません"
 WRITEINI("設定", "実行回数", 1) // 初回ということで1を書き込む
ENDIF

INIファイルを利用して設定を読み込む方法実行結果

 

READINI関数リファレンス

READINI関数のリファレンスをマニュアルから転載します。

戻値 = READINI( セクション, キー, [INIファイル名] )
引数
 セクション: セクション名
 キー: キー名
 INIファイル名: デフォルト(省略時)では、カレントディレクトリに スクリプト名.INI
戻値
 取得した値

 

WRITEINI関数リファレンス

WRITEINI関数のリファレンスをマニュアルから転載します。

WRITEINI( セクション, キー, 値, [INIファイル名] )
引数
 セクション: セクション名
 キー: キー名
 値: 書き込む値
 INIファイル名: デフォルト(省略時)では、カレントディレクトリに スクリプト名.INI

INIファイルを利用して設定を保存する方法

INIファイルを利用して設定を保存するにはWRITEINI関数を利用します。

設定をINIファイルに書き込み、次回起動時に読み込めば設定を引き継げて便利です。

このWRITEINI関数とREADINI関数を利用することでINIファイルを読み書きすることができます。

デフォルトではスクリプトと同名のINIファイルが生成されます。

 

INIファイルを利用して設定を保存するサンプル

WRITEINI("実験", "数値サンプル", RANDOM(10))
WRITEINI("実験", "文字列サンプル", "abcdefg")
WRITEINI("実験", "数値サンプル2", RANDOM(1000))

このような内容が書き込まれました。

INIファイルを利用して設定を保存する方法実行結果

 

WRITEINI関数リファレンス

WRITEINI関数のリファレンスをマニュアルから転載します。

WRITEINI( セクション, キー, 値, [INIファイル名] )
引数
 セクション: セクション名
 キー: キー名
 値: 書き込む値
 INIファイル名: デフォルト(省略時)では、カレントディレクトリに スクリプト名.INI

テキストファイルからランダムで1行読み込む方法

テキストファイルから1行読み出す応用で、ランダムな1行を読み出すことが可能です。

特に難しいことはしていませんのでサンプルで確認してみてください。

 

テキストファイルからランダムで1行読み込むサンプル

fileID = FOPEN("sample.txt", F_READ) // 読み込みモードでファイルを開く
maxLine = FGET(fileID, F_LINECOUNT)	 // 全部で何行あるかを数値で取得
str = FGET(fileID, RANDOM(maxLine) + 1) // どの行を読み出すかランダムにする
FCLOSE(fileID)
PRINT str

 

FGET関数リファレンス

FGET関数のリファレンスをマニュアルから転載します。

戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] )
引数
 ファイルID: オープン時に返されたID
 行: 取出したい行 (1から指定)
     F_LINECOUNT  を指定した場合はファイルの行数を返す
     F_ALLTEXT   を指定した場合はファイルの全内容を返す
 列: 取出したい列 (1から指定:,カンマ区切りのCSVファイルに対応)
 ダブルコーテイション:
   FALSE: 両端のダブルコーテイションは削除する (デフォルト)
   TRUE: 削除しない
   2:   CSV処理にて2つ連続ダブルコーティションを1つに (Excel同等処理)
戻値
 取出された値

 

テキストファイルの内容が何行あるか調べる方法

テキストファイルの内容が何行あるか調べるためにはFGET関数を利用します。

FGET関数は通常指定された行の内容を取得しますが、行の変わりにF_LINECOUNTを指定することで全体の行数を取得できます。

最後の行が空の場合はカウントされないようです。

事前にFOPEN関数でファイルを開いておくことを忘れないでください。

 

テキストファイルの内容が何行あるか調べるサンプル

fileID = FOPEN("sample.txt", F_READ) // 読み込みモードでファイルを開く
n = FGET(fileID, F_LINECOUNT) // 全部で何行あるかを数値で取得
FCLOSE(fileID)
PRINT "全部で" + n + "行あります"

 

FGET関数リファレンス

FGET関数のリファレンスをマニュアルから転載します。

戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] )
引数
 ファイルID: オープン時に返されたID
 行: 取出したい行 (1から指定)
     F_LINECOUNT  を指定した場合はファイルの行数を返す
     F_ALLTEXT   を指定した場合はファイルの全内容を返す
 列: 取出したい列 (1から指定:,カンマ区切りのCSVファイルに対応)
 ダブルコーテイション:
   FALSE: 両端のダブルコーテイションは削除する (デフォルト)
   TRUE: 削除しない
   2:   CSV処理にて2つ連続ダブルコーティションを1つに (Excel同等処理)
戻値
 取出された値