2016-08-28 35 views
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      

任何援助将好心赞赏

相关问题将子项目也检测文件?由于只有目录需要重命名

+1

错字:'$ .'应该是'$ _' – wOxxOm

回答

1

管理它以下面的代码排序 它只修改目录,而不是目录中包含的文件。

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


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

你应该加上''^只捕捉 '的' 字符串的开始。否则,您的替换件在某些情况下会产生错误的结果用“永不停止的车床”来试试。这也只有一个操作:'-replace'^(the)(。+)','$ 2,$ 1'' – Swonkie