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

时间:2018-11-29 15:14:21

标签: 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'  

但这对我不起作用。

1 个答案:

答案 0 :(得分:1)

为此,您需要2个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参数,如下所示:< / p>

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