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 回答