本ページには広告が含まれています。
目次
Windowsの一部の特殊フォルダのFolder オブジェクトを返します。
- 構文
- Folder = FileSystemObject.GetSpecialFolder( folderspec )
- 引数
- folderspec 省略可
- 設定値のいずれかを指定
設定値
定数名 | 値 | 説明 |
---|---|---|
WindowsFolder | 0 | Windowsフォルダ |
SystemFolder | 1 | Systemフォルダ |
TemporaryFolder | 2 | Tempフォルダ |
プログラム実行例
Windowsフォルダのファイル情報を取得
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
結果
ファイル名, パス, サイズ
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
使用関数
一時ファイルを作成・削除
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ファイルのパスをコピーして実行します。
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)
使用関数
解説
ファイルを開いているプロセスを調べる
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フォルダのパスを取得
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
PRINT Folder.Path
結果
D:\TMP
使用関数
フォルダ内の情報を表示
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
結果
名前: TMP
親フォルダパス: D:\
パス: D:\TMP
短い名前: TMP
短いパス: D:\TMP
使用関数
特殊フォルダに含まれるファイルの数を取得
Tempフォルダにあるファイルの数を出力します。
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM Files = Folder.Files
PRINT Files.Count
結果
191
使用関数
解説