在 PowerShell 4.0 中使用文件名重命名文件夹

克里斯托弗·特拉比格

我有很多文件夹要使用 PowerShell 批量重命名。在每个文件夹中都有许多具有不同扩展名的不同文件。我想要做的是使用 *.nfo 文件名重命名文件夹。

例子:

C:\foldertest\TEST\ 在此文件夹中,这些文件位于:
JPG.jpg
NFO.nfo
TXT.txt
WAV.wav

运行脚本后,我希望将文件夹重命名为 *.nfo:
C:\foldertest\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 文件。

戈登贝尔
Get-ChildItem -Path "E:\Test\Rename" -Include "*.nfo" -Recurse | 
ForEach-Object {
    $oldFolder = $_.DirectoryName

    # New Folder Name is .nfo Filename, excluding extension
    $newFolder = $_.Name.Substring(0, $_.Name.Length - 4)

    # Verify Not Already Same Name
    if ($_.BaseName.ToUpper() -ne $newFolder.ToUpper()) {
        Write-Host "Rename: $oldFolder To: $newFolder"

        Rename-Item -NewName $newFolder -Path $oldFolder
    }
}

您是否有多个级别的子文件夹?这很可能是您收到“无法重命名,因为项目不存在”错误的原因,因为您已经重命名了父文件夹。如果是这种情况,您将需要更复杂的东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 PowerShell 中重命名文件名

使用PowerShell重命名或删除文件名中的字符

如何在PowerShell中使用连续的数字重命名每个.jpg文件名

Powershell文件和子文件夹文件重命名

使用 PowerShell 重命名给定目录和子文件夹中没有扩展名的所有文件

PowerShell重命名多个文件,文件名的特定部分

PowerShell重命名文件名并保留扩展名

如何使用 Powershell 文件观察器检测文件夹内的文件夹更改(特别是重命名)

使用Powershell在Windows中重命名文件夹中的文件

重命名文件夹中的所有文件,并使用PowerShell将名称替换为creationTime

使用powershell将多个文件夹重命名为大写而不是文件

重命名子文件夹中的PowerShell错误

Powershell递归文件名读取并重命名

powershell 比较文件名并重命名

PowerShell - 重命名对象数组中的重复文件名

使用Regex重命名文件名,然后使用Powershell删除所有内容

使用Powershell将文件夹名称添加到文件名

我们如何使用Powershell脚本并参考文件名来分隔文件夹

使用Powershell脚本在文件夹中获取某些文件名

重命名文件夹,并与现有文件夹合并(如果Powershell中存在该文件夹)

我可以使用Powershell基于.CSV文件重命名子文件夹中的文件吗

如何使用PowerShell根据每个文件中的特定内容重命名文件夹中的文件?

Powershell-重命名文件夹中的特定文件-根据之前的最新文件

使用 PowerShell 重命名目录和子文件夹中具有给定名称的批量文件

使用 Powershell 重命名当前目录中包含文件和子目录的所有文件夹名称

如何使用Powershell将文件从一个文件夹复制并重命名到另一个文件夹?

如果文件名包含文件夹名,则 Powershell 将文件复制到文件夹

Powershell脚本获取具有文件夹的文件名和文件大小的csv文件

在PowerShell中批量重命名多个文件夹中的多个文件