我有一个软件,它会查找名为" report.txt"的文件。但是,文本文件并不是全部命名为report.txt,而且我有数百个子文件夹要经过。
情景:
J:\Logs
26-09-16\log.txt
27-09-16\report270916.txt
28-09-16\report902916.txt
我想在*.txt
中搜索文件J:\logs
的所有子文件夹,并将其重命名为report.txt
。
我尝试了这个,但它抱怨道路:
Get-ChildItem * |
Where-Object { !$_.PSIsContainer } |
Rename-Item -NewName { $_.name -replace '_$.txt ','report.txt' }
答案 0 :(得分:1)
Get-ChildItem *
会获取您当前的路径,因此请使用定义您想要的路径Get-ChildItem -Path "J:\Logs"
并添加recurse
,因为我们需要所有子文件夹中的文件
然后让我们使用include
的{{1}}和file
参数而不是Get-ChildItem
然后,如果我们将其传递给Where-Object
,我们可以在每个对象上使用Rename-Item,其中要重命名的对象为ForEach
,$_
为{{1} }}
NewName
我们可以使用一些别名以单行方式减少这一点,并依靠位置而不是列出每个参数
report.txt