FPUTエフプット関数

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

テキストファイルの書き込みを行います。

構文
  1. void = FPUT( ファイルID, 書込み値, 行, 列 )
引数
ファイルID (Integer)必須
オープン時に返されたID
書込み値 (String)必須
書込み内容
行 (Integer = 0,#fput = 0)省略可
書込み行(1から指定)
0(デフォルト)で行末に追加
F_ALLTEXTを指定した場合は行ではなくファイルの全内容として書き込む
列 (Integer = 0,#fput = 0)省略可
書込み列(1から指定:,カンマ区切りのCSVファイルに対応)
F_INSERTを指定した場合は指定行に挿入
戻り値
注:実際にファイルが更新されるのはFCLOSEが呼ばれた時です

使い方

以下のテキストファイルに操作を加えます。ファイル名を「sample.txt」としておきます。

sample.txt
1
2
3
4
5
6
7
8
9
10

全文書き換え

UWSC
DIM FID = FOPEN("sample.txt", F_READ OR F_WRITE)
FPUT(FID, 123, F_ALLTEXT)
PRINT FGET(FID, F_LINECOUNT)
// FCLOSE(FID)

FPUTで書き込みを行ったあと行数を取得したら「1」とはなるが、FCLOSEで保存はしていないので内容は変更されません。FCLOSEを実行しない=メモ帳で編集はしたが保存せずに終了したような状態。

結果
プレーンテキスト
1
プレーンテキスト
1
2
3
4
5
6
7
8
9
10

全文書き換え、複数行挿入

TEXTBLOCKを使うことで複数行をまとめて挿入できます。

UWSC
TEXTBLOCK str
あいうえお
かきくけこ
さしすせそ
ENDTEXTBLOCK

DIM FID = FOPEN("sample.txt", F_READ OR F_WRITE)
FPUT(FID, str, F_ALLTEXT)
FCLOSE(FID)
プレーンテキスト
あいうえお
かきくけこ
さしすせそ

指定行に1行挿入

UWSC
DIM FID = FOPEN("sample.txt", F_READ OR F_WRITE)
FPUT(FID, 15, 3, F_INSERT)
FCLOSE(FID)
プレーンテキスト
1
2
15
3
4
5
6
7
8
9
10

指定行に複数行挿入

UWSC
TEXTBLOCK str
15
16
ENDTEXTBLOCK

DIM FID = FOPEN("sample.txt", F_READ OR F_WRITE)
FPUT(FID, str, 3, F_INSERT)
FCLOSE(FID)
プレーンテキスト
1
2
15
16
3
4
5
6
7
8
9
10

ファイル内の改行をすべて削除

ファイル内の改行をすべて削除し1行の文字列にします。

UWSC
DIM FID = FOPEN("sample.txt", F_READ OR F_WRITE)
FPUT(FID, REPLACE(FGET(FID, F_ALLTEXT), "<#CR>", ""), F_ALLTEXT)
FCLOSE(FID)
プレーンテキスト
12345678910

プログラム実行例

システム起動時間を取得

システムの起動時間をyyyy/mm/dd, hh:nn:ssの形式で取得します。

UWSC
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の形式で出力されます。

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

テキストファイルの内容を行毎にソートして書き換える

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

csvファイルをHTMLのテーブルデータにする(csvToHTML)

CSVのデータをHTML(テーブル)に変換します。

クリップボードにcsvファイルのパスをコピーして実行します。

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

歌ネットから歌詞を取得してテキストファイルに保存

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

一時ファイル

UWSC
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

関連記事

FCLOSE関数 (スクリプト関数)
テキストファイルを閉じます。
FDELLINE関数 (スクリプト関数)
テキストファイルの指定行を削除します。
FGET関数 (スクリプト関数)
テキストファイルの読み込みを行います。
FOPEN関数 (スクリプト関数)
テキストファイルを開き、ファイルIDを取得します。
DELETEFILE関数 (スクリプト関数)
テキストファイルを削除します。
GETDIR関数 (スクリプト関数)
Folder.CopyHere メソッド (Shell)
1つまたは複数のアイテムをフォルダにコピーします。
Folder.MoveHere メソッド (Shell)
1つまたは複数のアイテムをこのフォルダーに移動します。
FileSystemObject オブジェクト
FSO.DeleteFile メソッド
DeleteFileメソッドは、指定した 1 つ以上のファイルを削除します。filespecに削除するファイルの名前を指定します。filespecにはワイルドカードを使用することができます。