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



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

例如。有一个名为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-ChildItemRename-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'
}

最新更新