※当サイトは、アフィリエイト広告を利用しPRを含みます。

技術系

Windows負荷テストツールfsutilでHDD容量閾値超過させる

Windowsで性能テスト。

  • HDD容量の閾値チェックをしたけど、数百GBのファイルを作るのが面倒。
  • fsutilコマンドで疑似的なGB単位のファイルは作れるけどバイト単位だからいちいち計算とか無理。
  • セキュリティに厳しい現場でツールは持ち込めない。

そう思った20代の若かりし頃の僕はどうにかして手を抜こうと必死にスクリプトを書きました。

 

HDD容量閾値超過ツール使い方

  1. ソースをコピーしてローカルにSJISで保存する。(big_dummy.vbsなど)
  2. コマンドプロンプトを管理者で起動し、vbsを実行する。
  3. ガイドに従ってGB単位の大きいサイズのファイルを作成する。
  4. ポップアップメッセージを閉じるとファイル削除メッセージが出るので削除する。
'*****************************************************
'*
'* 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容量閾値チェックツールと併せて使ってください

 

著作権について

著作権は当サイトの管理者に帰属します。

商用利用以外であれば著作権フリーですが、念のためコメントにてお知らせください。


社畜系インフラエンジニアブログのTOPへ戻る

コメントもらえたら泣いて喜びます!
  • この記事を書いた人
  • 最新記事
生き残りたいインフラエンジニアのカナデ

kanade

IT関連の仕事に従事し気付けば20余年。好きな言葉は「よくわからないけど動いてる」です。どうにかして生き残りたいアラフォーのIT系エンジニア。

-技術系
-,