Windowsで性能テスト。
- HDD容量の閾値チェックをしたけど、数百GBのファイルを作るのが面倒。
- fsutilコマンドで疑似的なGB単位のファイルは作れるけどバイト単位だからいちいち計算とか無理。
- セキュリティに厳しい現場でツールは持ち込めない。
そう思った20代の若かりし頃の僕はどうにかして手を抜こうと必死にスクリプトを書きました。
HDD容量閾値超過ツール使い方
- ソースをコピーしてローカルにSJISで保存する。(big_dummy.vbsなど)
- コマンドプロンプトを管理者で起動し、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 |
'***************************************************** '* '* 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容量閾値チェックツールと併せて使ってください
著作権について
著作権は当サイトの管理者に帰属します。
商用利用以外であれば著作権フリーですが、念のためコメントにてお知らせください。