【Windows】ダミーファイルを任意のサイズで作成する

SE仕事をしているとテストでダミーファイルが必要なことがよくあります。

Windowsでのダミーファイル作成方法を紹介します。

スポンサーリンク

Windowsでダミーファイル作成

Windowsでのダミーファイルですが、ここでは大きく分けて2パターンに分類して作成方法を紹介します。

パターンの分類としてはファイルの中身のデータの状態がどうなっているかです。

  1. 中身が全て「0」で埋め尽くされている(ゼロデータ)
  2. 中身がランダムな数字列や文字列となっている(ランダムデータ)

ゼロデータのダミーファイルを作成する

中身が「0」のダミーファイルを開いた画像

中身が「0」のダミーファイルはコマンド1つで作成でき、数GBのダミーファイルでもすぐに作成することができます。

コマンドプロンプトもしくはPowerShellで以下のようにコマンドを実行します。

fsutil file createnew [ファイル名] [サイズ]

[ファイル名]と[サイズ]には任意のものを指定してください。サイズの単位はバイトになります。

コマンド例)1MByteのファイルを作成

fsutil file createnew testfile 1048576

コマンド例)1GByteのファイルを作成

fsutil file createnew testfile 1073741824
PowerShellでfsutilコマンドを実行した結果の画像

ファイル名をフルパスで指定しなかった場合はカレントディレクトリに作成されます。

ゼロデータのダミーファイルを使用する時の注意

作成した直後のファイルはディスク上のブロックとして確保されているだけのため、実際にこのファイルを読み込んでもディスクから読みだすわけではなく、ゼロデータを返すだけです。

そのため、そのままではディスクの読み出しテストには使えません。

ディスクから読みだすようにするには、作成したファイルをコピーする等で実際にディスクに書き込んでから使用する必要があります。

また、ネットワーク速度を確認するためのファイル転送等のテストに使用する分には問題ありませんが、圧縮処理が入るととても小さなファイルとなってしまうため誤った結果になるので注意してください。

ランダムデータのダミーファイルを作成する

中身がランダムのダミーファイルを開いた画像

中身がランダムのダミーファイルは実際に数字列や文字列を作成してファイルに書き込んでいくという処理となるため、数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

別ファイルにするため、ファイル名に「%1」をつけ忘れないようにしてください。

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 }

別ファイルにするため、ファイル名に「$1」をつけ忘れないようにしてください。

ランダムデータのダミーファイルを作成する

ランダムデータのダミーファイル大量作成は、作成したスクリプトファイルとPowerShellのループ処理を利用します。

for ($i=0; $i -lt [作成する数]; $i++){ .\ダミーファイル作成.ps1 [ファイル名]$i [サイズ] }

コマンド例)1GByteのファイルを10個(10GByte分)作成

for ($i=0; $i -lt 10; $i++){ .\ダミーファイル作成.ps1 testfile$i 1073741824 }

別ファイルにするため、ファイル名に「$1」をつけ忘れないようにしてください。

コメント

タイトルとURLをコピーしました