FSO.GetSpecialFolder メソッド

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

Windowsの一部の特殊フォルダのFolder オブジェクトを返します。

構文
  1. Folder = FileSystemObject.GetSpecialFolder( folderspec )
引数
folderspec 省略可
設定値のいずれかを指定
戻り値
Folder オブジェクト

設定値

定数名 説明
WindowsFolder 0 Windowsフォルダ
SystemFolder 1 Systemフォルダ
TemporaryFolder 2 Tempフォルダ

プログラム実行例

Windowsフォルダのファイル情報を取得

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(0)
PRINT "ファイル名,パス,サイズ"

FOR File IN Folder.Files
	WITH File
		PRINT .Name + "," + .Path + "," + formatBytes(.Size)
	ENDWITH
NEXT

//////////////////////////////////////////////////
// 【引数】
//   size : バイト単位で示されるデータサイズの値 
//   digits : 小数点以下の桁数 
//   unit : 変換後のデータサイズの単位。Bytes、KB、MB、GB、TB、PB、EB、ZB、YBのいずれかを指定。省略した場合は自動的に選択されます。 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION formatBytes(size, digits = 2, unit = "")
	HASHTBL prefixes
	prefixes[0] = "Bytes"
	prefixes[1] = "KB"
	prefixes[2] = "MB"
	prefixes[3] = "GB"
	prefixes[4] = "TB"
	prefixes[5] = "PB"
	prefixes[6] = "EB"
	prefixes[7] = "ZB"
	prefixes[8] = "YB"
	DIM i = 0
	WHILE (unit <> "" OR size >= 1024) AND prefixes[i] <> unit
		size = size / 1024
		i = i + 1
	WEND
	RESULT = TRIM(FORMAT(size, LENGTH(size), digits)) + IIF(size <> 0 AND INT(size) = size, "." + strRepeat("0", digits), "") + prefixes[i]
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND
結果
CSV
ファイル名,              パス,                               サイズ
bfsvc.exe,               C:\Windows\bfsvc.exe,               79.5KB
Bluestream.bmp,          C:\Windows\Bluestream.bmp,          2.25MB
bootstat.dat,            C:\Windows\bootstat.dat,            66.00KB
BRRBCOM.INI,             C:\Windows\BRRBCOM.INI,             15.71KB
Core.xml,                C:\Windows\Core.xml,                29.16KB
csup.txt,                C:\Windows\csup.txt,                10.00Bytes
diagerr.xml,             C:\Windows\diagerr.xml,             11.17KB
diagwrn.xml,             C:\Windows\diagwrn.xml,             11.17KB
eiunin21.exe,            C:\Windows\eiunin21.exe,            609.00KB
EPMBatch.ept,            C:\Windows\EPMBatch.ept,            1.44KB
explorer.exe,            C:\Windows\explorer.exe,            5.01MB
HelpPane.exe,            C:\Windows\HelpPane.exe,            1.03MB
hh.exe,                  C:\Windows\hh.exe,                  18.00KB
iis.log,                 C:\Windows\iis.log,                 112.45KB
iphlpapi.dll,            C:\Windows\iphlpapi.dll,            92.5KB
mib.bin,                 C:\Windows\mib.bin,                 42.12KB
msdfmap.ini,             C:\Windows\msdfmap.ini,             1.37KB
NDSTray.INI,             C:\Windows\NDSTray.INI,             0Bytes
notepad.exe,             C:\Windows\notepad.exe,             196.5KB
pala_wsxga.bmp,          C:\Windows\pala_wsxga.bmp,          3.71MB
pala_wuxga.bmp,          C:\Windows\pala_wuxga.bmp,          6.59MB
pala_wxga.bmp,           C:\Windows\pala_wxga.bmp,           2.93MB
pala_xga.bmp,            C:\Windows\pala_xga.bmp,            2.25MB
PFRO.log,                C:\Windows\PFRO.log,                1.31MB
py.exe,                  C:\Windows\py.exe,                  902.67KB
pyshellext.amd64.dll,    C:\Windows\pyshellext.amd64.dll,    56.67KB
pyw.exe,                 C:\Windows\pyw.exe,                 902.67KB
regedit.exe,             C:\Windows\regedit.exe,             361.5KB
setupact.log,            C:\Windows\setupact.log,            6.83KB
setuperr.log,            C:\Windows\setuperr.log,            0Bytes
splwow64.exe,            C:\Windows\splwow64.exe,            160.00KB
system.ini,              C:\Windows\system.ini,              219.00Bytes
TPSCCfg.exe,             C:\Windows\TPSCCfg.exe,             460.43KB
tvgadget.scr,            C:\Windows\tvgadget.scr,            504.00KB
twain_32.dll,            C:\Windows\twain_32.dll,            63.5KB
twin.dlt,                C:\Windows\twin.dlt,                5.55KB
win.ini,                 C:\Windows\win.ini,                 478.00Bytes
WindowsShell.Manifest,   C:\Windows\WindowsShell.Manifest,   670.00Bytes
WindowsUpdate.log,       C:\Windows\WindowsUpdate.log,       276.00Bytes
winhlp32.exe,            C:\Windows\winhlp32.exe,            11.5KB
WLXPGSS.SCR,             C:\Windows\WLXPGSS.SCR,             294.86KB
WMPrfJpn.prx,            C:\Windows\WMPrfJpn.prx,            22.76KB
WMSysPr9.prx,            C:\Windows\WMSysPr9.prx,            309.22KB
write.exe,               C:\Windows\write.exe,               11.00KB
_MSRSTRT.EXE,            C:\Windows\_MSRSTRT.EXE,            2.5KB
使用関数

一時ファイルを作成・削除

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM filename = FSO.GetTempName
DIM path = FSO.BuildPath(folderspec, filename)

PRINT path

DIM TextStream = FSO.CreateTextFile(path)
// 現在の日時をファイルに書き込む
TextStream.WriteLine(now())
TextStream.Close

// Tempファイルを削除
// FSO.DeleteFile(path)

FUNCTION now()
	GETTIME()
	RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " " + G_TIME_HH2 + ":" + G_TIME_NN2
FEND
結果
プレーンテキスト
D:\TMP\rad83BB3.tmp
使用関数
解説

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
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

//////////////////////////////////////////////////
// 【引数】
//   
// 【戻り値】
//   
//////////////////////////////////////////////////
PROCEDURE forceQuit()
	EXITEXIT
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND
使用関数
解説

Tempフォルダのパスを取得

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)

PRINT Folder.Path
結果
プレーンテキスト
D:\TMP
使用関数

フォルダ内の情報を表示

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)

WITH Folder
	PRINT "名前:" + .Name
	PRINT "親フォルダパス:" + .ParentFolder.Path
	PRINT "パス:" + .Path
	PRINT "短い名前:" + .ShortName
	PRINT "短いパス:" + .ShortPath
ENDWITH
結果
CSV
名前:             TMP
親フォルダパス:   D:\
パス:             D:\TMP
短い名前:         TMP
短いパス:         D:\TMP
使用関数

特殊フォルダに含まれるファイルの数を取得

Tempフォルダにあるファイルの数を出力します。

UWSC
CONST TemporaryFolder = 2

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM Files = Folder.Files

PRINT Files.Count
結果
プレーンテキスト
191
使用関数
解説