この記事では、PowerShellを使ってフォルダ内のファイル名に一括で文字列を置換し、ファイルをリネームする方法を紹介。ただし、日本語のフォルダ名やサブフォルダがある場合には、うまく動作しない可能性があるため、要注意。
とりあえず1階層、かつ英語のフルパスならこれで問題なく動いた。
# 変更対象のフォルダを指定する
$folderPath = "C:\tmp\"
# 変更前の文字列を指定する
$oldString = "OldText"
# 変更後の文字列を指定する
$newString = "NewText"
# フォルダ内のファイルを取得し、ファイル名を変更する
Get-ChildItem $folderPath | ForEach-Object {
$newName = $_.Name -replace $oldString, $newString
$newPath = Join-Path $_.Directory.FullName $newName
Rename-Item $_.FullName -NewName $newName -ErrorAction SilentlyContinue
}上記コードでは、大きく次のステップを実行している。
1.各ファイルのファイル名に対して、$oldStringを$newStringに置換した文字列を作成し、$newName変数に代入。
2.次に、$newNameと各ファイルの親フォルダのパスを使用して、新しいファイルパスを作成し、$newPath変数に代入。
3.最後に、Rename-Item cmdletを使用して、各ファイルのファイル名を$newNameに変更。
以上の手順で、大量に保存ていたファイルの命名規則を後から変更するといったシチュエーションで活用できる。
0 件のコメント:
コメントを投稿