2

ビジネス命名基準に準拠するために、約 600 のディレクトリの名前を変更する必要があり、非常に複雑であることがわかっています。

問題を音楽ディレクトリの形式で提示します。これは、説明と関連付けが容易になるためです。

すべての音楽ディレクトリの名前を変更したい場合、前置詞が最初ではなく最後に表示されます

オリジナル

ビートルズ

望ましい出力

ビートルズ

例として次のディレクトリがあります

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
d----        28/08/2016   3:51 PM            Alabama Shakes                    
d----        28/08/2016   3:51 PM            Cat Stevens                       
d----        28/08/2016   3:41 PM            The Beatles                       
d----        28/08/2016   3:42 PM            The Brian Jonestown Massacre      
d----        28/08/2016   3:42 PM            The Rolling Stones                
d----        28/08/2016   3:43 PM            Them                              
d----        28/08/2016   3:43 PM            Them Rotten Vultures              
d----        28/08/2016   3:42 PM            Van Morrison

名前を変更したいものだけに結果をフィルタリングするための何かを書くことができました

Get-ChildItem -Filter "THE *"

ただし、それらすべての名前を変更するロジックをどのように変更するかはわかりません。再帰的になり、Rename-Item関数を使用すると確信しています。

ただし、次のことを試しました

Get-ChildItem -Filter "The *" -Recurse | 
    Rename-Item -NewName { $_.name -replace 'The ','' } | 
    Rename-Item -NewName { $_.name + " ,The" }

そして、次の結果を得ました

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
d----        28/08/2016   3:51 PM            Alabama Shakes                    
d----        28/08/2016   3:41 PM            Beatles                           
d----        28/08/2016   3:42 PM            Brian Jonestown Massacre          
d----        28/08/2016   3:51 PM            Cat Stevens                       
d----        28/08/2016   3:42 PM            Rolling Stones                    
d----        28/08/2016   3:43 PM            Them                              
d----        28/08/2016   3:43 PM            Them Rotten Vultures              
d----        28/08/2016   3:42 PM            Van Morrison                      

ご協力をお願いいたします。

関連する質問 子アイテムもファイルを検出しますか? ディレクトリのみ名前を変更する必要があるため

4

1 に答える 1

1

次のコードでソートすることができました。ディレクトリのみを変更し、ディレクトリに含まれるファイルは変更しません。

Get-ChildItem -Filter "The *" -Directory|
    ?{ $_.PSIsContainer } | 
    Rename-Item -NewName { $_.name + " ,The" }


Get-ChildItem -Filter "The *" -Directory|
    ?{ $_.PSIsContainer } | 
    Rename-Item -NewName { $_.name -replace 'The ','' }
于 2016-08-28T08:38:34.440 に答える