SEの仕事をしているとテストでファイルを使用することがよくあります。わざわざ必要なファイルを用意するのは面倒ですが、ダミーファイルで問題ない場合は簡単にコマンドで作成することができます。
Windowsでのダミーファイル作成方法を紹介します。
Windowsでダミーファイルを作成する
Windowsでのダミーファイルですが、ここではファイルの中身のデータ状態によって、2つのパターンに分類して作成方法を紹介します。
- 中身が全て「0」で埋め尽くされている(ゼロデータ)
- 中身がランダムな数字列や文字列となっている(ランダムデータ)
ゼロデータのダミーファイルを作成する
中身が「0」のダミーファイルはコマンド1つで作成でき、数GBの大容量ダミーファイルでもすぐに作成することができます。
コマンドプロンプトもしくはPowerShellで以下のようにコマンドを実行します。
fsutil file createnew [ファイル名] [サイズ]
[ファイル名]と[サイズ]には任意のものを指定してください。サイズの単位はバイトになります。
コマンド例)1MByteのファイルを作成
fsutil file createnew testfile 1048576
コマンド例)1GByteのファイルを作成
fsutil file createnew testfile 1073741824
ファイル名をフルパスで指定しなかった場合はカレントディレクトリに作成されます。
ゼロデータのダミーファイルを使用する時の注意
作成した直後のファイルはディスク上のブロックとして確保されているだけのため、実際にこのファイルを読み込んでもディスクから読みだすわけではなく、ゼロデータを返すだけです。
そのため、そのままではディスクの読み出しテストには使えません。
ディスクから読みだすようにするには、作成したファイルをコピーする等で実際にディスクに書き込んでから使用する必要があります。
また、ネットワーク速度を確認するためのファイル転送等のテストに使用する分には問題ありませんが、圧縮処理が入るととても小さなファイルとなってしまい、誤った結果になるので注意が必要です。
ランダムデータのダミーファイルを作成する
中身がランダムのダミーファイルは実際に数字列や文字列を作成してファイルに書き込んでいくという処理となるため、数GBの大容量ダミーファイルとなると作成するのにそれなりの時間がかかります。
中身がランダムのダミーファイルを作成するにはPowerShellのスクリプトファイルを作成して使用します。
メモ帳等のテキストエディターに以下の内容をコピーし、ファイル名は任意で問題ありませんが、拡張子は「.ps1」で保存してください。
Param ( [Parameter(Mandatory=$true)] [string] $FilePath, [Parameter(Mandatory=$true)] [ValidateRange(1,107374182400)] [long] $FileSize ) $ErrorActionPreference = 'Stop' if((Split-Path $FilePath -IsAbsolute) -eq $false){ $LocationPath = Get-Location $FilePath = Join-Path $LocationPath $FilePath } Add-type -AssemblyName System.Web [long]$WriteSize = 0 $file = New-Object System.IO.StreamWriter($FilePath, $false) while($WriteSize -lt $FileSize){ $String = [System.Web.Security.Membership]::GeneratePassword(128, 1) $file.Write($String) $WriteSize = $WriteSize + 128 } $file.Close()
ここでは「ダミーファイル作成.ps1」として保存します。
PowerShell上で「ダミーファイル作成.ps1」を保存したフォルダーに移動し、引数に「ファイル名」「サイズ」を指定して実行します。
.\ダミーファイル作成.ps1 [ファイル名] [サイズ]
[ファイル名]と[サイズ]には任意のものを指定してください。サイズの単位はバイトになります。
コマンド例)1MByteのファイルを作成
.\ダミーファイル作成.ps1 testfile 1048576
コマンド例)1GByteのファイルを作成
.\ダミーファイル作成.ps1 testfile 1073741824
PowerShellスクリプトの実行に失敗した場合は、以下の記事をご覧ください。
ランダムデータのダミーファイル作成時の注意
スクリプトファイルはランダムデータを128Byteずつ書き込んでいるので、128で割り切れない数字を指定した場合は「128」で切り上げられます。
例えば「1000」を指定しても、作成されたファイルは「1024Byte」となります。
大量のダミーファイルを作成する方法
ループ処理と組み合わせることで簡単に大量のダミーファイルを作成することが可能です。
ゼロデータのダミーファイルを作成する
Windowsのループ処理はコマンドプロンプトとPowerShellでは記述方法が異なります。
コマンドプロンプトの場合
コマンドプロンプトでは以下のように書くことができます。
for /l %i in (1,1,[作成する数]) do fsutil file createnew [ファイル名]%i [サイズ]
コマンド例)1GByteのファイルを10個(10GByte分)作成
for /l %i in (1,1,10) do fsutil file createnew testfile%i 1073741824
別ファイルにするため、ファイル名に「%i」をつけ忘れないようにしてください。
PowerShellの場合
PowerShellでは以下のように書くことができます。
for ($i=0; $i -lt [作成する数]; $i++){ fsutil file createnew [ファイル名]$i [サイズ] }
コマンド例)1GByteのファイルを10個(10GByte分)作成
for ($i=0; $i -lt 10; $i++){ fsutil file createnew testfile$i 1073741824 }
別ファイルにするため、ファイル名に「$i」をつけ忘れないようにしてください。
ランダムデータのダミーファイルを作成する
ランダムデータのダミーファイル大量作成は、作成したスクリプトファイルとPowerShellのループ処理を利用します。
for ($i=0; $i -lt [作成する数]; $i++){ .\ダミーファイル作成.ps1 [ファイル名]$i [サイズ] }
コマンド例)1GByteのファイルを10個(10GByte分)作成
for ($i=0; $i -lt 10; $i++){ .\ダミーファイル作成.ps1 testfile$i 1073741824 }
別ファイルにするため、ファイル名に「$i」をつけ忘れないようにしてください。
コメント