こんにちは。
本日はPowerShellメモです。
概要
大量のファイルが必要な場面って時々ありますよね。
その時にサクッとファイルを大量生成できるサンプルのメモです。
本日用意したサンプルには引数を3つ用意しています。
- 第1引数:作成先ディレクトリパス
- 第2引数:コピー元ファイル
- 第3引数:作成するファイル数
実行すると指定した作成先ディレクトリに
コピー元ファイル名に数字を追加した名前でコピーします。
例えばこんな感じです。
作成先ディレクトリパス => ./AAA
コピー元ファイル => ./aaa.txt
作成するファイル数 => 3
実行結果は
./AAA/aaa1.txt
./AAA/aaa2.txt
./AAA/aaa3txt
の3ファイルが生成されます。
サンプルコード
$dir = $args[0] $file = $args[1] $num = $args[2] if (-not (Test-Path $dir)) { Write-Host "指定されたディレクトリが存在しません" exit } if (-not (Test-Path $file)) { Write-Host "指定されたファイルが存在しません" exit } $extention = [System.IO.Path]::GetExtension($file) $name = [System.IO.Path]::GetFileNameWithoutExtension($file) for ($i = 1; $i -lt ($num + 1); $i++) { $fileName = $name + $i + $extention $filePath = Join-Path $dir $fileName Copy-Item $file -Destination $filePath }
引数は以下のコードで取得しています。
$dir = $args[0] $file = $args[1] $num = $args[2]
以下の処理で拡張子と拡張子を除いたファイル名を取得します。
$extention = [System.IO.Path]::GetExtension($file) $name = [System.IO.Path]::GetFileNameWithoutExtension($file)
あとは、ループで回しながらファイル名を構築して
Copy-Item
でファイルをコピーしています。
Copy-Item $file -Destination $filePath
以上です。