Windowsで性能テスト。
- HDD容量の閾値チェックをしたけど、数百GBのファイルを作るのが面倒。
- fsutilコマンドで疑似的なGB単位のファイルは作れるけどバイト単位だからいちいち計算とか無理。
- セキュリティに厳しい現場でツールは持ち込めない。
そう思った20代の若かりし頃の僕はどうにかして手を抜こうと必死にスクリプトを書きました。
HDD容量閾値超過ツール使い方
- ソースをコピーしてローカルにSJISで保存する。(big_dummy.vbsなど)
- コマンドプロンプトを管理者で起動し、vbsを実行する。
- ガイドに従ってGB単位の大きいサイズのファイルを作成する。
- ポップアップメッセージを閉じるとファイル削除メッセージが出るので削除する。
'*****************************************************
'*
'* big_dummy.vbs
'* 処理:fsutilコマンドで大きいサイズのダミーファイルを作成
'*
'*
'*****************************************************
Option Explicit
Dim objShell
Dim objFileSys
Dim objDrive
Dim intRunRC 'Shell.Runのリターンコード
Dim intMsgRC 'メッセージボックスのリターンコード
Dim intInptNum '入力された数値
Dim intInptTmp '計算用、テンポラリー
Dim intHddBef 'HDD事前
Dim intHddAft 'HDD事後
Dim strBigFile '作成ファイル名フルパス
Dim strDriveLetter 'ドライブレター
Dim strDATE 'yyyymmddHHMMSS形式の日付(ファイル生成時用)
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFileSys = CreateObject("Scripting.FileSystemObject")
strDATE = Year(Now()) & Right(0 & Month(Now()),2) & Right(0 & Day(Now()),2) _
& Right(0 & Hour(Now()),2) & Right(0 & Minute(Now()),2) & Right(0 & Second(Now()),2)
'ダミーファイル作成先ドライブ名を取得(ユーザ入力)
strDriveLetter = InputBox("ドライブ名を入力してください(例:C)", "ダミーファイル作成ツール")
If (IsEmpty(strDriveLetter)=True OR IsNull(strDriveLetter)=True OR strDriveLetter="") Then
MsgBox "キャンセルします", vbInformation, "ダミーファイル作成ツール"
WScript.Quit
End If
On Error Resume Next 'エラー回避
Set objDrive = objFileSys.GetDrive(strDriveLetter)
If objDrive.IsReady = False Then
MsgBox "使用できないドライブが入力されました", vbExclamation, "ダミーファイル作成ツール"
WScript.Quit
End If
'ファイルサイズを取得(ユーザ入力)
intInptNum = InputBox(vbCrlf & vbCrlf & "作成するファイルサイズを入力してください(GB)", "ダミーファイル作成ツール")
If IsNumeric(intInptNum)=False Then '文字列判定
MsgBox vbCrlf & "文字が入力されました " & vbCrlf & vbCrlf & "数字を入力してください" & vbCrlf , vbExclamation, "ダミーファイル作成ツール"
WScript.Quit
End If
If intInptNum=0 Then '0入力判定
WScript.Quit
End If
'GBサイズのダミーファイルのファイルパスを作成
intInptTmp = intInptNum * 1073741824
intHddBef = FormatNumber(((objDrive.TotalSize - objDrive.FreeSpace) / objDrive.TotalSize * 100),0) & "%"
strBigFile = strDriveLetter & ":\_" & strDATE & "_" & intInptNum & "GB_dummy "
'非表示モードでfsutilコマンドを実行
intRunRC = objShell.Run("""fsutil.exe"" file createnew " & strBigFile & intInptTmp,0,True)
'ダミーファイル作成のためスリープ
WScript.Sleep(500)
If intRunRC <> 0 Then
MsgBox "fsutilコマンドが失敗しました。" & vbCrlf & "管理者権限ユーザで実行していない可能性があります。", vbCritical,"ダミーファイル作成ツール"
WScript.Quit
End If
'ダミーファイル作成後のHDD空き容量
intHddAft = FormatNumber(((objDrive.TotalSize - objDrive.FreeSpace) / objDrive.TotalSize * 100),0) & "%"
If objFileSys.FileExists(strBigFile)=True Then
MsgBox intInptNum & "GBのdummyファイルを作成しました" & vbCrlf & vbCrlf & vbCrlf & _
strDriveLetter & "ドライブ使用率:" & intHddBef & " → " & intHddAft, vbInformation, "ダミーファイル作成ツール"
Else
MsgBox "ファイルを作成できませんでした。" & vbCrlf & vbCrlf & vbCrlf & _
strDriveLetter & "ドライブ空き容量 " & FormatNumber((objDrive.FreeSpace + 1) / 1073741824,0) & "GB", vbCritical,"ダミーファイル作成ツール"
End If
'メッセージボックスを連打してdummyファイルを削除しないようにWait
WScript.Sleep(1000)
'ファイル削除
If objFileSys.FileExists(strBigFile)=True Then
intMsgRC = MsgBox(strBigFile & vbCrlf & vbCrlf & "ファイルを【 削 除 】 します", vbExclamation, "ダミーファイル作成ツール")
objFileSys.DeleteFile(strBigFile)
Else
WScript.Quit '削除するファイルが無い場合は終了
End If
'ファイル削除確認と完了メッセージ
If objFileSys.FileExists(strBigFile)=True Then
MsgBox strBigFile & "ファイルが残っています", vbExclamation, "ダミーファイル作成ツール"
Else
MsgBox strBigFile & "ファイルを削除しました", vbInformation, "ダミーファイル作成ツール"
End If
Set objShell = Nothing
Set objFileSys = Nothing
Set objDrive = Nothing
HDD容量閾値超過ツール解説
もうどうやってソースを書いたか覚えていません。が、どうにか動いているので良しとします。
実行して値を入力するとGB単位でファイルを一瞬で作ってくれます。
Windows負荷テストツールHDD容量閾値チェックツールと併せて使ってください
著作権について
著作権は当サイトの管理者に帰属します。
商用利用以外であれば著作権フリーですが、念のためコメントにてお知らせください。
