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

使用PowerShell重命名目录和子文件夹中具有给定名称的大容量文件,powershell,Powershell,我正在寻找一种解决方案来重命名目录和子文件夹中具有给定名称的所有文件 例如。 有一个名为c:\blah的目录,在这个文件夹中,有一个名为BaR.txt的文件和一个名为foo的文件夹。在foo文件夹中,有另一个名为bAr.txt的文件。 我想找到所有名为bar.txt的文件,并将每个文件的名称更改为“neo.txt”。还必须能够将文件重命名为小写,例如bar.txt。 到目前为止,我已经尝试在Windows10中使用Windows资源管理器手动执行此操作,但由于某些奇怪的原因,当我尝试重命名批量文

我正在寻找一种解决方案来重命名目录和子文件夹中具有给定名称的所有文件

例如。 有一个名为
c:\blah
的目录,在这个文件夹中,有一个名为
BaR.txt的文件和一个名为foo的文件夹。在
foo
文件夹中,有另一个名为
bAr.txt
的文件。 我想找到所有名为
bar.txt
的文件,并将每个文件的名称更改为“neo.txt”。还必须能够将文件重命名为小写,例如
bar.txt
。 到目前为止,我已经尝试在Windows10中使用Windows资源管理器手动执行此操作,但由于某些奇怪的原因,当我尝试重命名批量文件时,在每个文件名的末尾添加了额外的“(1)”符号。 我尝试使用PowerShell并创建了一个命令

$_.name -replace 'bar.txt','neo.txt'  

但它对我不起作用。

要做到这一点,您需要两个cmdlet:
Get-ChildItem
Rename-Item

这应该起作用:

Get-ChildItem -Path 'C:\Blah' -Filter 'bar.txt' -Recurse | ForEach-Object {
    Rename-Item -Path $_.FullName -NewName 'neo.txt'
}
但是,如果在
foo
文件夹中有更多子文件夹,此代码将重命名在所有这些子文件夹中找到的名为
bar.txt
(不区分大小写)的所有文件

如果您不想深入到
C:\Blah
(名为
foo
)中的第一个子文件夹,可以在命令上使用
-Depth
参数,如下所示:

Get-ChildItem -Path 'C:\Blah' -Filter 'bar.txt' -Recurse -Depth 1 | ForEach-Object {
    Rename-Item -Path $_.FullName -NewName 'neo.txt'
}

这正是我要找的,ta!这不是powershell的答案。。。但是有一种工具非常适合这种用途。这是
简介-批量重命名实用程序-https://www.bulkrenameutility.co.uk/Main_Intro.php
,而且非常方便。不过,这需要获得批准,因此您可能仍然需要使用PoSh。感谢您的提示,我还发现了一个名为AdvanceNamer的应用程序。它是免费的,您可以非常轻松地在Windows资源管理器中进行搜索,然后从结果中选择所有文件,并将所有文件拖放到advanced renamer。然后你可以用这个程序来重命名。完成。然而,PowerShell srcipt似乎是最快的方法。豪华的解决方案是实现自动化的途径。[grin]BRU应用程序的屏幕看起来像一个regex“如何”网站。许多字段可以用来进行不同类型的更改,另外,它有自己的文件浏览器。