FSO.GetSpecialFolder メソッド

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

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

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

設定値

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

プログラム実行例

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

UWSC
CONST WindowsFolder = 0

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(WindowsFolder)
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
結果
UWSC
ファイル名,パス,サイズ
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
結果
UWSC
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
結果
UWSC
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
結果
UWSC
名前: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
結果
UWSC
191
使用関数