最近、C ドライブの空き容量が少ないときに OS がどのような動作をするか調査する機会がありました。fsutil file コマンドにより、簡単に空き容量の調整ができたので、使用した PowerShell スクリプトを残しておきます。
環境
Windows OS 全般
PowerShell スクリプト
# Cドライブの情報を取得
$drive = Get-PSDrive -Name C
# Cドライブの空き容量 (バイト単位)
$freeSpace = $drive.Free
# 1GB (1073741824 バイト)
$targetFreeSpace = 1GB
# 1GBを残すために作成するダミーファイルのサイズ (バイト単位)
$dummyFileSize = $freeSpace - $targetFreeSpace
# 作成するダミーファイルのパス
$dummyFilePath = "C:\dummyfile.dat"
# ダミーファイルのサイズが正の数の場合のみファイルを作成
if ($dummyFileSize -gt 0) {
fsutil file createnew $dummyFilePath $dummyFileSize
}
スクリプト解説
この PowerShell スクリプトは、Cドライブの空き容量を計算し、1GB の空き容量を残すように指定したサイズのダミーファイルを作成するものです。これにより、Cドライブの空き容量を自動的に 1GB まで減らすことができます。
1. Cドライブの情報を取得
$drive = Get-PSDrive -Name C
Get-PSDrive
コマンドを使用して、Cドライブの情報(容量、空き容量など)を取得し、$drive
変数に C ドライブの情報が格納しています。
2. Cドライブの空き容量 (バイト単位) を取得
$freeSpace = $drive.Free
$drive.Free
は、Cドライブの空き容量をバイト単位で返します。この空き容量が $freeSpace
変数に格納されます。
3. 1GB をバイトで表す定数を指定
$targetFreeSpace = 1GB
1GBは 1,073,741,824 バイト(2の30乗)です。このサイズを $targetFreeSpace
変数に格納しています。この1GBを「目標の空き容量」として設定し、それ以上に空き容量がある場合にファイルを作成していきます。
4. 作成するダミーファイルのサイズを計算
$dummyFileSize = $freeSpace - $targetFreeSpace
現在の空き容量 $freeSpace
から目標の空き容量 $targetFreeSpace
(1GB)を引いた値が、ダミーファイルのサイズとなります。つまり、Cドライブの空き容量が1GBになるように調整したサイズのダミーファイルを作成するために、このサイズを計算しています。
5. ダミーファイルのパスを指定
$dummyFilePath = "C:\dummyfile.dat"
ダミーファイルの保存場所とファイル名を指定しています。ここでは、C:\dummyfile.dat
としてファイルを作成するように設定しています。
6. 空き容量が 1GB より多い場合にダミーファイルを作成
if ($dummyFileSize -gt 0) {
fsutil file createnew $dummyFilePath $dummyFileSize
}
計算したダミーファイルのサイズ $dummyFileSize
が正の値(0より大きい)場合にのみ、ダミーファイルを作成します。fsutil file createnew
コマンドを使うと、指定したパス $dummyFilePath
に $dummyFileSize
のサイズを持つ空のファイルが作成できます。作成完了まで、それほど時間はかかりません。
さいごに
データは、バックグラウンドで作成されたり、削除されたりするものがあり、スクリプト実行してから時間が経つと空き容量が 1GB ではなくなりますが、正確さは問題ではないのでいいかなと思ってます。