次のコマンドは、一致するディレクトリ構造を再帰的にトラバースし、一致する各ファイルまたはディレクトリに対して、powershell-replace
演算子を使用して問題のある各文字を空の文字に置き換えることにより、そのファイルの名前を変更します。
フィルタリングするすべての正規文字に一致する正規表現を作成する必要があることに注意してください。提供した例と一致させて丸括弧を削除すると、正規表現は次のようになります。
$re = "[()]"
角かっこを追加したい場合は、バックスラッシュを使用してエスケープする必要があります。
$re = "[\[\]()]"
必要に応じて、外側の角括弧の間に文字を追加し続けます。
$re = "[\[\]()!]"
-replace
スクリプトは次のとおりです。オペレーターが各反復で名前の基本部分のみに作用するように、ちょっとしたダンスに注意してください。
dir -Recurse | ?{$_.Name -match $re} | %{ren -literalpath $_.FullName -newname (join-path (get-item $_.PSPArentPath) $($_.Name -replace $re,""))}
いくつかのメモ:
- コマンドの
-LiteralPath
引数は、ren
ファイルを角かっこで置き換えることができるようにするために必要です: [] Powershell v3 IIRC でのみ使用できます。
- 名前の変更後に名前の競合が発生する可能性がありますが、このスクリプトはそれを処理しません。