powershell - 将命题重命名为目录标题的末尾

标签 powershell directory rename-item-cmdlet

我必须更改大约600个目录的名称以符合业务命名标准,事实证明它非常复杂。

我将以音乐目录格式介绍该问题,因为它更易于解释和联系。

如果我想重命名所有具有它的音乐目录,它将在结尾而不是开头显示介词

Original

The Beatles

Desired Output

Beatles ,The



我有以下目录作为示例
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                      

任何帮助将不胜感激

相关问题子项也会检测到文件吗?由于仅目录需要重命名

最佳答案

设法使它与以下代码排序
它仅修改目录,而不修改目录中包含的文件。

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


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

关于powershell - 将命题重命名为目录标题的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39188468/

相关文章:

powershell - Get-Help 找不到 ServiceFabric 模块的帮助文件

powershell - 查找并替换同时包含双引号和方括号的字符串

multithreading - 解压缩适用于单线程,但不适用于多线程

unix - Cmake 无法工作 - 没有当前工作目录

perl - Perl中如何查看目录是否存在?

powershell - 重命名项目 : add unique numeric sequence to prevent duplicate file names

powershell - 使用Powershell复制并重命名在前一天修改的文件

PowerShell 4.0 添加打印机

c# - DotNetZip 添加文件而不创建文件夹

powershell - 基于文件内容的一线PowerShell批处理重命名