PowerShellで正規表現を使ったファイル名の変更をしたいのですが、うまくいかなくて困ってます。
例えば、
ls "F:\Pictures\" | Rename-Item -WhatIf -NewName {$_.Name -replace '.*(\d{1,3}.*)','$1'}
と実行すると、
WhatIf: 対象 "項目: F:\Pictures\photo1.jpg 変更先: F:\Pictures\1.jpg" に対して操作 "ファイル名の変更" を実行しています。 WhatIf: 対象 "項目: F:\Pictures\photo12.jpg 変更先: F:\Pictures\2.jpg" に対して操作 "ファイル名の変更" を実行しています。 WhatIf: 対象 "項目: F:\Pictures\photo123.jpg 変更先: F:\Pictures\3.jpg" に対して操作 "ファイル名の変更" を実行しています。
と出力されます。
変更前のナンバリング番号と拡張子を後方参照で取り出すだけですが、ナンバリングの最後の数字しかマッチしません。
目的の出力結果として、
WhatIf: 対象 "項目: F:\Pictures\photo1.jpg 変更先: F:\Pictures\1.jpg" に対して操作 "ファイル名の変更" を実行しています。 WhatIf: 対象 "項目: F:\Pictures\photo12.jpg 変更先: F:\Pictures\12.jpg" に対して操作 "ファイル名の変更" を実行しています。 WhatIf: 対象 "項目: F:\Pictures\photo123.jpg 変更先: F:\Pictures\123.jpg" に対して操作 "ファイル名の変更" を実行しています。
のようにしたいのですが、どうすれば良いでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。