批量重命名 - 再次
Batch Renaming - Again
我正在帮助一家慈善机构解决他们遇到的一些 IT 问题。其中一部分是整理他们的文件和工作。我正在尝试编写一些重命名脚本,但运气不佳!
他们有很多视频博客、音频文件和 word 类型的文档,文件名都不好。糟糕如老人和他的狗.mp4
开头有很多"The" "i" "A"等。我现在已经根据文件类型分类到文件夹中了。但仍然想更新文件名以阅读更多 like
老人和他的狗 (The).mp4
你能帮我一点忙吗,因为我对 Powershell 还是个新手,还在工作中学习。
我已经能够删除文件名的第一部分,但不知道如何将其添加到文件名的末尾。
Get-ChildItem The*.* |Rename-Item -NewName {$_.name -替换"The ",''}
例如,我需要搜索所有子文件夹并找到所有以 "The " 开头的文件和文件夹。
所以之前:- 老人和他的狗.mp4
并将文件保存在该文件夹中
并将其重命名为 Old Man and His Dog (The).mp4
您可以组合应该从文件名开头删除的不同单词,并使用如下方式将其放在名称末尾的括号中:
# create an array of words that start the file name and should be moved towards the back
$words = 'The', 'i', 'a'
# create a regex pattern where all possible words are separated by the regex OR (|) sign
$re = '^({0})[ ,]+' -f ($words -join '|')
Get-ChildItem -Path 'D:\' -File | Where-Object { $_.Name -match $re } | ForEach-Object {
$newName = '{0} ({1}){2}' -f ($_.BaseName -replace $re), $matches[1], $_.Extension
$_ | Rename-Item -NewName $newName -WhatIf
}
示例输出
D:\The Old Man and his dog.mp4 --> D:\Old Man and his dog (The).mp4
D:\A Nightmare on Elm Street.mp4 --> D:\Nightmare on Elm Street (A).mp4
D:\I, Robot.mkv --> D:\Robot (I).mkv
如果控制台输出正常,请移除 -WhatIf
开关
我正在帮助一家慈善机构解决他们遇到的一些 IT 问题。其中一部分是整理他们的文件和工作。我正在尝试编写一些重命名脚本,但运气不佳!
他们有很多视频博客、音频文件和 word 类型的文档,文件名都不好。糟糕如老人和他的狗.mp4
开头有很多"The" "i" "A"等。我现在已经根据文件类型分类到文件夹中了。但仍然想更新文件名以阅读更多 like
老人和他的狗 (The).mp4
你能帮我一点忙吗,因为我对 Powershell 还是个新手,还在工作中学习。
我已经能够删除文件名的第一部分,但不知道如何将其添加到文件名的末尾。
Get-ChildItem The*.* |Rename-Item -NewName {$_.name -替换"The ",''}
例如,我需要搜索所有子文件夹并找到所有以 "The " 开头的文件和文件夹。
所以之前:- 老人和他的狗.mp4
并将文件保存在该文件夹中
并将其重命名为 Old Man and His Dog (The).mp4
您可以组合应该从文件名开头删除的不同单词,并使用如下方式将其放在名称末尾的括号中:
# create an array of words that start the file name and should be moved towards the back
$words = 'The', 'i', 'a'
# create a regex pattern where all possible words are separated by the regex OR (|) sign
$re = '^({0})[ ,]+' -f ($words -join '|')
Get-ChildItem -Path 'D:\' -File | Where-Object { $_.Name -match $re } | ForEach-Object {
$newName = '{0} ({1}){2}' -f ($_.BaseName -replace $re), $matches[1], $_.Extension
$_ | Rename-Item -NewName $newName -WhatIf
}
示例输出
D:\The Old Man and his dog.mp4 --> D:\Old Man and his dog (The).mp4 D:\A Nightmare on Elm Street.mp4 --> D:\Nightmare on Elm Street (A).mp4 D:\I, Robot.mkv --> D:\Robot (I).mkv
如果控制台输出正常,请移除 -WhatIf
开关