我正在寻找一个解决方案来重命名目录和子文件夹中所有具有给定名称的文件。
例如。有一个名为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'
}