- 締切済み
VBS【ドライブ残量】
いつも大変御世話になっております。 【D:\test】フォルダ内に、VBS【test.vbs】があります。 この【test.vbs】は以下のようなコードです。 -------------------------------------------------------------------------------------- Dim fso, d, s Set fso = CreateObject("Scripting.FileSystemObject") Set d = fso.GetDrive(fso.GetDriveName("C:\")) s = s & "Cドライブ使用可能領域 : " & FormatNumber(d.FreeSpace/1024, 0) s = s & " KBです。" if FormatNumber(d.FreeSpace/1024, 0) > 50000000 then wscript.echo s & " 50G以上の空き容量を確保してますので安全容量です。" else if FormatNumber(d.FreeSpace/1024, 0) > 20000000 then wscript.echo s & " 20G以上の空き容量があります。" else if FormatNumber(d.FreeSpace/1024, 0) > 10000000 then wscript.echo s & " 10G以上の空き容量があります。" else wscript.echo s & "不要ファイルを削除して下さい。" end if end if end if -------------------------------------------------------------------------------------- 上記VBSはCドライブ内の空き容量をkbでよみにいき、kbの数値で判定しています。 これをGBでよみにいってGBで判定したいのですが可能でしょうか? 理想は2ケタ表示です。 例:25G (四捨五入で繰り上げた値) かつwscript.echoのメッセージ箇所を【D:\test\LOG】フォルダ内の【DRIVE.txt】というファイルに追記とかは可能でしょうか? 計算方法の箇所を変更するばよいのですが、ややこしくて困っています。 何かアドバイス等をご教授願いますでしょうか? 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- rivoisu
- ベストアンサー率36% (97/264)
im fso, d, s Dim fsgb Dim f Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set fso = CreateObject("Scripting.FileSystemObject") Set d = fso.GetDrive(fso.GetDriveName("C:\")) s = s & "Cドライブ使用可能領域 : " & FormatNumber(d.FreeSpace/1024, 0) s = s & " KBです。" fsgb=d.FreeSpace/1024/1024/1024 select case fsgb case >50 s=s & " 50G以上の空き容量を確保してますので安全容量です。" case >20 s=s & " 20G以上の空き容量があります。" case >10 s=s & " 20G以上の空き容量があります。" case else s=s & "不要ファイルを削除して下さい。" end select Set f = fso.OpenTextFile(D: est\LOG\DRIVE.txt", ForAppending, True) f.Writeline s f.Close テストはしてませんので(^^;)
- rivoisu
- ベストアンサー率36% (97/264)
freespaceが返すのはバイトです。 ギガバイトにするには1024で2回割り算するしかないと思います。 べつに手間ではないでしょう。 むしろfreespace/1024を何回も記述するよりfreespace/1024/1024を変数に入れておいて使うようにしたほうがプログラムが見やすくなります。 テキストファイルに追記は可能です。 appendモードでオープンします。