PowerShellでダミーファイル作成

はじめに

タイムスタンプを指定したダミーファイルを作成する必要があったので、さくっと作成した際のメモ。

PowerShellは色々できるのでWindowsで開発するなら覚えておいて損はない感じですね。

(環境構築したりとかいらないので。)

つくったもの

以下をCreateFiles.ps1のようなファイル名で保存。

Param(
    # ファイル名
    [parameter(mandatory=$true)][String]$Arg1,
    # 拡張子
    [parameter(mandatory=$true)][String]$Arg2,
    # 開始日
    [parameter(mandatory=$true)][String]$Arg3,
    # 期間
    [parameter(mandatory=$true)][Int]$Arg4,
    # ファイルサイズ
    [parameter(mandatory=$true)][Int]$Arg5
)

[Int]$filesize = $Arg5

[DateTime]$filedate = [datetime]::ParseExact("$Arg3","yyyyMMdd",$null)

for ($i=0; $i -lt $Arg4; $i++)
{
    [String]$filename = "$Arg1" + 
                        "_" + 
                        $filedate.ToString("yyyyMMddHHmmss") + 
                        "." + "$Arg2"
    fsutil file createnew $filename $filesize
    Set-ItemProperty $filename -Name LastWriteTime -Value $filedate
    $filedate = $filedate.AddDays(-1)
}

以下のように実行する。

.\CreateFile.ps1 hoge log 20190110 10 1000

hoge_20190110000000.logのようなファイルが10日分できる感じです。

まとめ

今回はさくっとPowerShellでダミーファイルを作成するスクリプトを作成しました。

PowerShellはいろいろとできる言語ですのでもっと勉強していきたいですね。

テストの際はタイムスタンプをいじらなければいけない場面がありますが、

OSの時間を変更してファイルを作成するのではなくプログラムを書くようにしましょう。

※テストデータの再現性がないので辛いことなります。

【改訂新版】 Windows PowerShell ポケットリファレンス

【改訂新版】 Windows PowerShell ポケットリファレンス