【发布时间】:2017-07-10 10:52:10
【问题描述】:
我有一个文件目录,其中包含许多文件夹。在每个子文件夹中,我都有各种文件。我想浏览每个文件,重命名一些项目,并为其中一些添加扩展名。我正在使用 Powershell 来执行此操作。
我的文件名带有“.”都需要用“_”替换,例如,“wrfprs_d02.03”应该是“wrfprs_d02_03”。我能够使用以下代码在一个文件夹中成功地做到这一点:
dir | rename-item -NewName {$_.name -replace "wrfprs_d02.","wrfprs_d02_"}
之后,我做了这些替换,我想在一些文件上添加 .grb 扩展名,这些文件都以“w”开头,我可以在一个文件夹中做到这一点:
Get-ChildItem | Where-Object {$_.Name -match "^[w]"} | ren -new {$_.name + ".grb"}
当我从一个文件夹后退并尝试在多个文件夹中迭代地执行此操作时,我的代码不起作用。我在一个名为“Z:\Windows.Documents\My Documents\Test_data\extracted”的目录中,其中包含我想要迭代的所有子文件夹。我正在使用以下代码:
$fileDirectory = "Z:\Windows.Documents\My Documents\Test_data\extracted"
foreach($file in Get-ChildItem $fileDirectory)
{
dir | rename-item -NewName {$_.name -replace "wrfprs_d02.","wrfprs_d02_"}
Get-ChildItem | Where-Object {$_.Name -match "^[w]"} | ren -new {$_.name + ".grb"}
}
对我的问题有什么想法吗?
【问题讨论】:
标签: powershell foreach rename