powershell - 使用 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'
但这对我不起作用。
解决方案
为此,您需要 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
命令中的参数,如下所示:
Get-ChildItem -Path 'C:\Blah' -Filter 'bar.txt' -Recurse -Depth 1 | ForEach-Object {
Rename-Item -Path $_.FullName -NewName 'neo.txt'
}
推荐阅读
- node.js - 摩卡在测试后没有退出
- ruby - 终端中的“拆分”整数
- angular - 运行 Angular-CLI .NET 应用程序时会启动两个 IIS Express 服务器
- node.js - 在 node-red 中没有生成节点
- scala - 使用 Scala 的 Kafka 的 Spark Cassandra 性能不佳
- java - 无法将项目方面动态 Web 模块的版本更改为 3.1
- visual-c++ - ADsOpenObject - 连接到同一网络中另一个域的 rootDSE
- angular - Angular 5 - 按同步顺序发出 2 个 GET 请求,然后在 DataTable 中显示数据
- apache-kafka - Kafka s3 连接“值不是结构类型”错误
- javascript - ReactJS 附加选择属性