我正在寻找一种解决方案,以重命名目录和子文件夹中所有具有给定名称的文件。
例如
有一个名为c:\blah
的目录,并且在此文件夹中有一个名为BaR.txt
的文件和一个名为foo的文件夹。在foo
文件夹中,还有一个名为bAr.txt
的文件。
我想查找所有名称为bar.txt
的文件,并将每个文件的名称更改为“ neo.txt”。还必须能够将文件重命名为小写,例如bar.txt
。
到目前为止,我已经尝试使用Windows10中的Windows资源管理器手动执行此操作,但是由于某些奇怪的原因,当我尝试重命名批量文件时,每个文件名的末尾都添加了额外的“(1)”符号。
我尝试使用PowerShell,并创建了一个命令
$_.name -replace 'bar.txt','neo.txt'
但这对我不起作用。
答案 0 :(得分:1)
为此,您需要2个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
参数,如下所示:< / p>
Get-ChildItem -Path 'C:\Blah' -Filter 'bar.txt' -Recurse -Depth 1 | ForEach-Object {
Rename-Item -Path $_.FullName -NewName 'neo.txt'
}