【发布时间】:2022-08-22 15:47:28
【问题描述】:
我有一个脚本,用于清理文件名以匹配我喜欢的样式/格式。它按原样工作,但有点难看,并且每次更改都会循环。理想情况下,它会一次处理每个文件名的所有更改,然后继续下一个,而不是每次都抓取 gci。
有什么建议可以让它更优雅/更精简吗?谢谢!
#need this for camel casing later
$Culture = Get-Culture
#Remove Other Tags
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'(retail)\',\'\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'(epub)\',\'\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'(mobi)\',\'\') }
#Pad Dashes
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'-\',\' - \') }
#Replace Underscores with Spaces
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'_\',\' \') }
#Replace dots with space except for in the extension
Get-ChildItem -Recurse | Rename-Item -NewName { ($_.BaseName -replace \'\\.\',\' \') + $_.Extension }
#Rename to Camel Casecd
Get-ChildItem -recurse | Rename-Item -NewName {$Culture.textinfo.totitlecase($_.FullName)}
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\' .\',\'.\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'.Epub\',\'.epub\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'.Pdf\',\'.pdf\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'.Mp3\',\'.mp3\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'For\',\'for\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'And\',\'and\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'In\',\'in\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'On\',\'on\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'Of\',\'of\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'From\',\'from\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'To\',\'to\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\' A \',\' a \') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\' i\',\' I\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'epubo O\',\'epub\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'Html\',\'HTML\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'Css\',\'CSS\') }
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\'Css\',\'CSS\') }
#Remove Double Spaces
Get-ChildItem -Recurse | Rename-Item -NewName { $_.Name.Replace(\' \',\' \') }
-
我认为您的代码的问题在于您查询相同的文件列表 25 次。我建议查询它们一次,对它们的名称进行所有更改,然后重命名它们......只有一次。 ;-)
标签: windows powershell filesystems