なんだかGoodVibes

日々の勉強メモです。

【PowerShell】ファイルをコピーしてファイルを量産してみる

こんにちは。
本日は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



以上です。