【发布时间】:2018-02-07 11:11:51
【问题描述】:
我有很多要使用 PowerShell 批量重命名的文件夹。在每个文件夹中都有许多具有不同扩展名的不同文件。我想要做的是用 *.nfo 文件名重命名文件夹。
例子:
C:\文件夹测试\测试\
这些文件位于此文件夹中:
JPG.jpg
NFO.nfo
TXT.txt
WAV.wav
运行脚本后,我希望将文件夹重命名为 *.nfo:
C:\文件夹测试\NFO\
我需要一个可以同时处理 > 1 个文件夹的解决方案。
这就是我所拥有的(不工作 o/c):Get-ChildItem -Path "C:\foldertest\" | Where-Object{$_.PSisContainer} | ForEach-Object -Process {
$new1Name = Get-ChildItem $_ -Filter "*.nfo" | Select-Object -ExpandProperty BaseName
Rename-Item -Path $_.FullName -NewName ($_.Name -replace $new1Name
}
更新:
我仍然有问题。解决方案(见下文)一开始似乎有效,但仅在某些时候有效。假设 30% 的文件夹。然后这个错误发生在其余部分:Rename-Item : Cannot rename because item at 'C:\Users\STOFFES\Desktop\REN\blablablabla' does not exi
st.
At C:\Users\STOFFES\Desktop\REN\REN.ps1:2 char:3
+ Rename-Item (Split-Path $_ -Parent) ($_.BaseName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
即使大多数文件夹中都有 *.nfo 文件。
【问题讨论】:
标签: powershell renaming