次のようなファイルの名前を変更するための短い powershell スクリプトを書きたいと思います。
abc(1), abc(2), .., abc(10), .., abc(123), ..
に
abc(001), abc(002), .., abc(010), .., abc(123), ..
何か案が?:)
次のようなファイルの名前を変更するための短い powershell スクリプトを書きたいと思います。
abc(1), abc(2), .., abc(10), .., abc(123), ..
に
abc(001), abc(002), .., abc(010), .., abc(123), ..
何か案が?:)
これを試して:
Get-ChildItem abc* | Where {$_ -match 'abc\((\d+)\)'} |
Foreach {$num = [int]$matches[1]; Rename-Item $_ ("abc({0:000})" -f $num) -wh }
パイプラインの Where ステージは、2 つのことを行っています。まず、指定されたパターンに一致するファイル名のみが渡されます。次に、キャプチャ グループを使用して、にある名前の数値部分を取得します$matches[1]
。
$_
Foreach ステージは、渡された で表される各項目にスクリプトを適用します。最初に行うことは、古いファイル名の「数値」部分を取得することです。次に、Rename-Item (PowerShell の名前変更コマンド) を使用して、$_ で表される古い名前から、書式設定文字列を使用して計算された新しい名前に名前を変更します"abc({0:000})" -f $num
。この場合、フォーマット ディレクティブは{}
0 の後に指定された値の位置を表します-f
。is は、:000
最大 3 つの先行ゼロを含む数値を表示するフォーマット ディレクティブです。最後に、Rename-Item のような潜在的に破壊的な操作を指示して、実際には何もせずに何をするかを示す の-wh
略です。-WhatIf
コマンドが正しく機能していることを確認したら、-wh
もう一度実行します。