本ページには広告が含まれています。
目次
ファイルを閉じます。第一引数にはFOPEN関数で返すファイルのIDを指定します。
- 構文
- Boolean = FCLOSE( ファイルID, エラー処理 )
- 引数
- ファイルID (Integer)必須
- オープン時に返されたID
- エラー処理 (Boolean = False)省略可
- FALSE
- エラー時はエラーダイアログを出す(デフォルト)
- TRUE
- エラーダイアログを出さない
- 戻り値
- TRUE
- 正常終了
- FALSE
- エラー有り
使い方
書き込み処理中にエラーが発生した場合もファイルを閉じる。
DIM FOPEN(filename, F_READ OR F_WRITE)
TRY
// エラーが発生する可能性のある処理
FINALLY
FCLOSE(FID)
ENDTRY
プログラム実行例
システム起動時間を取得
システムの起動時間をyyyy/mm/dd, hh:nn:ssの形式で取得します。
HASHTBL INFO
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM filename = uniqueFilename(FSO.BuildPath(GET_CUR_DIR, "SYSTEMINFO.csv"))
FID = FOPEN(filename, F_READ OR F_WRITE)
FPUT(FID, DOSCMD("systeminfo /FO CSV"))
FCLOSE(FID)
FID = FOPEN(filename, F_READ OR F_WRITE)
FOR col = 0 TO 33
INFO[FGET(FID, 1, col)] = FGET(FID, 2, col)
NEXT
FCLOSE(FID)
FSO.DeleteFile(filename)
PRINT INFO["システム起動時間"]
結果
2019/12/21, 15:53:56
使用関数
解説
Windowsの稼働時間を取得
Windowsシステムの起動時間から稼働時間を求めます。
結果はd:hh:nn:ssの形式で出力されます。
HASHTBL INFO
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM filename = uniqueFilename(FSO.BuildPath(GET_CUR_DIR, "SYSTEMINFO.csv"))
DIM FID = FOPEN(filename, F_READ OR F_WRITE)
FPUT(FID, DOSCMD("systeminfo /FO CSV"))
FCLOSE(FID)
FID = FOPEN(filename, F_READ OR F_WRITE)
DIM col = 1
WHILE FGET(FID, 1, col) <> ""
INFO[FGET(FID, 1, col)] = FGET(FID, 2, col)
col = col + 1
WEND
FCLOSE(FID)
FSO.DeleteFile(filename)
DIM startupTime = INFO["システム起動時間"]
DIM date1 = dateValue(startupTime) + timeValue(startupTime)
DIM date2 = uwscToSerial(GETTIME())
PRINT INT(date2 - date1) + ":" + text(date2 - date1, "hh:mm:ss")
結果
0:08:16:46
使用関数
解説
テキストファイルの内容を行毎にソートして出力する
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ)
DIM array[-1]
FOR i = 1 TO FGET(FID, F_LINECOUNT)
arrayPush(array, FGET(FiD, i))
NEXT
FCLOSE(FID)
QSORT(array, QSRT_A)
FOR i = 0 TO UBound(array)
PRINT array[i]
NEXT
使用関数
テキストファイルの内容を行毎にソートして書き換える
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ OR F_WRITE)
DIM array[-1]
FOR i = 1 TO FGET(FID, F_LINECOUNT)
arrayPush(array, FGET(FiD, i))
NEXT
QSORT(array, QSRT_A)
FPUT(FID, "", F_ALLTEXT)
FOR i = 0 TO UBound(array)
FPUT(FID, array[i], i + 1)
NEXT
FCLOSE(FID)
使用関数
テキストファイルを行毎に読み上げる
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ)
FOR i = 1 TO FGET(FID, F_LINECOUNT)
FUKIDASI(i)
SPEAK(FGET(FID, i))
SLEEP(1.000)
NEXT
FCLOSE(FID)
使用関数
特定の文字列の行を削除
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ OR F_WRITE)
FOR i = FGET(FID, F_LINECOUNT) TO 1 STEP -1
IF FGET(FID, i) = "aaa" THEN FDELLINE(FID, i)
NEXT
FCLOSE(FID)
使用関数
特定の文字列を含む行を削除
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ OR F_WRITE)
FOR i = FGET(FID, F_LINECOUNT) TO 1 STEP -1
IFB POS("aaa", FGET(FID, i)) <> 0 THEN
FDELLINE(FID, i)
ENDIF
NEXT
FCLOSE(FID)
使用関数
csvファイルをHTMLのテーブルデータにする(csvToHTML)
CSVのデータをHTML(テーブル)に変換します。
クリップボードにcsvファイルのパスをコピーして実行します。
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM name = FSO.GetTempName
DIM TempPath = FSO.BuildPath(folderspec, name)
DIM path = GETSTR(0)
DIM FID = FOPEN(path, F_READ)
DIM FID2 = FOPEN(TempPath, F_READ OR F_WRITE)
FPUT(FID2, "<table>", F_ALLTEXT)
FOR row = 1 TO FGET(FID, F_LINECOUNT)
DIM col = 1
FPUT(FID2, "<#TAB><tr>", 0)
WHILE FGET(FID, row, col) <> ""
FPUT(FID2, "<#TAB><#TAB><td>" + (FGET(FID, row, col)) + "</td>", 0)
col = col + 1
WEND
FPUT(FID2, "<#TAB></tr>", 0)
NEXT
FPUT(FID2,"</table>", 0)
FCLOSE(FID)
FCLOSE(FID2)
FID = FOPEN(TempPath, F_READ)
SENDSTR(0, FGET(FID, F_ALLTEXT))
PRINT FGET(FID, F_ALLTEXT)
FCLOSE(FID)
使用関数
解説
歌ネットから歌詞を取得してテキストファイルに保存
CONST ssfDesktop = 0
DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("https://www.uta-net.com/song/280568/")
BusyWait(IE)
DIM element, elements, name, lyrics
element = IE.document.getElementById("view_kashi")
elements = element.getElementsByClassName("title")
name = TRIM(elements.Item(0).innerText)
element = IE.document.getElementById("kashi_area")
lyrics = element.innerText
IE.Quit
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfDesktop)
DIM path = Folder.Self.Path
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
path = uniqueFilename(FSO.BuildPath(path, name + ".txt"))
DIM FID = FOPEN(path, F_READ OR F_WRITE)
FPUT(FID, lyrics)
FCLOSE(FID)
使用関数
ファイルを開いているプロセスを調べる
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
WITH FSO
DIM Folder = .GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM filename = .GetTempName
DIM path = .BuildPath(folderspec, filename)
ENDWITH
DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.FileRun()
DIM ID = GETID("ファイル名を指定して実行", "#32770")
SENDSTR(ID, "cmd /c openfiles /query /fo CSV > " + path)
CLKITEM(ID, "OK", CLK_BTN)
SLEEP(0.500)
REPEAT
SLEEP(0.100)
UNTIL GETID("C:\WINDOWS\system32\cmd.exe", "ConsoleWindowClass") = -1
DIM FID = FOPEN(path, F_READ)
TRY
DIM ID2 = GETID("使用中", "OperationStatusWindow")
GETITEM(ID2, ITM_ACCTXT, 1)
DIM str = ALL_ITEM_LIST[1]
DIM sep = IIF(POS("フォルダー", STATUS(ID2, ST_TITLE)) <> 0, "\", "")
DIM msg = "■" + str + "<#CR>"
FOR r = 5 TO FGET(FID, F_LINECOUNT)
IF POS("\" + str + sep, FGET(FID, r, 3)) <> 0 THEN
msg = msg + "ID:" + FGET(FID, r, 1) + ", プロセス名:" + FGET(FID, r, 2) + "<#CR>"
ENDIF
NEXT
FCLOSE(FID)
REPEAT
FUKIDASI(TRIM(msg))
SLEEP(0.100)
UNTIL GETID("使用中", "OperationStatusWindow") = -1
FINALLY
FSO.DeleteFile(path)
ENDTRY
使用関数
解説
一時ファイル
DIM FID = FOPEN("", F_READ OR F_WRITE)
FPUT(FID, data, F_ALLTEXT)
FOR r = 1 TO FGET(FID, F_LINECOUNT)
FOR c = 1 TO 4
PRINT FGET(FID, r, c)
NEXT
NEXT
FCLOSE(FID)
TEXTBLOCK data
12, 22, 45, 61
42, 53, 45, 98
ENDTEXTBLOCK
使用関数
関連記事
- FDELLINE関数 (スクリプト関数)
- テキストファイルの指定行を削除します。
- FGET関数 (スクリプト関数)
- テキストファイルの読み込みを行います。
- FOPEN関数 (スクリプト関数)
- テキストファイルを開き、ファイルIDを取得します。
- FPUT関数 (スクリプト関数)
- テキストファイルの書き込みを行います。
- DELETEFILE関数 (スクリプト関数)
- テキストファイルを削除します。
- GETDIR関数 (スクリプト関数)
- Folder.CopyHere メソッド (Shell)
- 1つまたは複数のアイテムをフォルダにコピーします。
- Folder.MoveHere メソッド (Shell)
- 1つまたは複数のアイテムをこのフォルダに移動します。
- FileSystemObject オブジェクト
- FSO.CopyFile メソッド
- 指定したファイルを別の場所にコピーします。