formatBytesフォーマットバイツ

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

引数に指定したデータサイズを示すバイト単位の値を適切な単位に変換した文字列を返します。

自作関数.formatBytes (Shell)自作関数.formatBytes (FSO)File.Size プロパティ (FSO)などSizeプロパティで取得される値はすべてバイト単位のため、それらの値を適切な単位に変換するために使います。

この関数が使えるSizeプロパティは「.Size」の検索結果を参考にしてください。

構文
formatBytes( size, digits, unit )
引数
size (Integer)必須
バイト単位で示されるデータサイズの値
digits (Integer = 2)省略可
小数点以下の桁数
unit (String)省略可
変換後のデータサイズの単位。BytesKBMBGBTBPBEBZBYBのいずれかを指定。省略した場合は自動的に選択されます。
戻り値

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   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のときに返す値 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

使い方

UWSC
PRINT formatBytes(756423)                // 756423を適切な単位に
PRINT formatBytes(772303060)             // 772303060を適切な単位に
PRINT formatBytes(772303060, 2, "KB")    // 772303060を小数点以下2桁・KB単位に
PRINT fonrmatBytes(21890933760)          // 21890933760を適切な単位に
結果
プレーンテキスト
738.69KB
736.53MB
754202.21KB
20.39GB

プログラム実行例

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のときに返す値 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   
//////////////////////////////////////////////////
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
使用関数