PowerShellで重複ファイルがある場合ファイル名に連番を付与する。

powershell コンピュータ
powershell

エクスプローラーで同じファイルをコピーすると連番で新しいファイルが出来上がります。
それと同じような機能をPowerShellで書いてみました。

param(
    [string]
    $File="./note.txt"
)

$dir = Split-Path $File
$ext = [System.IO.Path]::GetExtension($File)
$name = [System.IO.Path]::GetFileNameWithoutExtension($File)

$i = 0
$file = Join-Path $dir ($name+$ext)
while(Test-Path $file)
{
    $i++
    $file = Join-Path $dir ($name+(" - copy({0:d3})" -f $i)+$ext)
}

echo "a" | Out-File -FilePath $file

結果

PS C:\Users\karet\Documents\PowerShell> ls *.txt

    Directory: C:\Users\karet\Documents\PowerShell

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/11/02    10:56              3 note - copy(001).txt
-a---          2024/11/02    10:56              3 note - copy(002).txt
-a---          2024/11/02    10:56              3 note.txt

コメント