Windowsで性能テスト。HDD容量の閾値チェックをしたけど、でかいファイルを作るのが面倒!
fsutilコマンドで疑似的なGB単位のファイルは作れるけどバイト単位だからいちいち計算しなきゃ…
そう思った20代の若かりし頃の僕はどうにかして手を抜こうと必死にスクリプトを書きました。
HDD容量閾値超過ツール使い方
- ソースをコピーしてローカルに保存する。(big_dummy.vbsなど)
- 実行してGB単位のでかい容量のファイルを作成する。
- ポップアップメッセージを閉じるとファイル削除メッセージが出るので削除する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
'***************************************************** '* '* big_dummy.vbs '* 処理:fsutilコマンドで大きいサイズのダミーファイルを作成 '* '* ※fsutilを使用するのでUAC有効時は管理者権限が必須です '* '***************************************************** 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容量閾値チェックツールと併せて使ってください
著作権について
商用利用以外であれば著作権フリーです。
過去、どこかの現場で必要になり家で作りました。
(なんせ現場で作らせてもらえませんでしたからね)
無料公開している理由
今でもよく現場で使うことがあって、一元管理したいのでここに残します。
あとあと直すかもと思いコメント入れまくったけど全然直さないし。
バグってたら教えてください。
ソースは汚くて恥ずかしいけど、僕プログラマーじゃないし(言い訳)