4

数字で始まる名前を持つファイルがたくさんあり、2 つの数字のいずれかの後にスペースとダッシュが含まれる場合があり、保持したい名前の最初のアルファ文字の直前にスペースが含まれる場合があります (そうでない場合もあります)。

2-01 Dazed And Confused.txt (これをDazed And Confused.txtにリネームしたい)

または

02 - Uncle Salty.txt (これを Uncle Salty.txt に名前を変更したい)

または

02-The Night Before.txt (The Night Before.txtにリネームしたい)

4

3 に答える 3

4
dir c:\tmp | % {
     mv $_.FullName $(Join-Path $_.Directory ($_.Name -replace "^([0-9\-\s]*)",'').Trim());
}

YourDirectory を再帰的に処理する必要がある場合は、 after を追加-recursedirます。

于 2013-02-24T11:58:20.770 に答える
0

次のようなことを試してください:

$re = '^\d+\s*-\d*\s*(.*)$'
$recurse = $false

Get-ChildItem "C:\some\folder" -Recurse:$recurse | ? {
  -not $_.PSIsContainer -and $_.Name -match $re
} | % {
  Move-Item $_.FullName (Join-Path $_.Directory $matches[1])
}

ハイフンをオプションにしたい場合は、正規表現を'^\d+\s*-?\d*\s*(.*)$'.

サブフォルダーに再帰する場合は、に変更$recurse$trueます。

于 2013-02-24T12:10:07.077 に答える