我有数百个文件,其名称如下:
MOD15A2H.A2012001.h26v06.001.2015230181014_LAI500m.tif
MOD15A2H.A2012009.h26v06.001.2015236194306_LAI500m.tif
MOD15A2H.A2012017.h26v06.001.2015237120626_LAI500m.tif
MOD15A2H.A2012025.h26v06.001.2015237124147_LAI500m.tif
MOD15A2H.A2012033.h26v06.001.2015237131607_LAI500m.tif
MOD15A2H.A2012041.h26v06.001.2015237232610_LAI500m.tif
MOD15A2H.A2012049.h26v06.001.2015238141341_LAI500m.tif
MOD15A2H.A2012057.h26v06.001.2015238172148_LAI500m.tif
MOD15A2H.A2012065.h26v06.001.2015238191713_LAI500m.tif
MOD15A2H.A2012073.h26v06.001.2015238174737_LAI500m.tif
MOD15A2H.A2012081.h26v06.001.2015239174812_LAI500m.tif
MOD15A2H.A2012089.h26v06.001.2015240024933_LAI500m.tif
MOD15A2H.A2012097.h26v06.001.2015240043222_LAI500m.tif
MOD15A2H.A2012105.h26v06.001.2015240142201_LAI500m.tif
MOD15A2H.A2012113.h26v06.001.2015240161909_LAI500m.tif
我需要将它们重命名为
L2012001.tif
L2012009.tif etc.,
我正在尝试通过 Powershell 命令批量重命名它们到目前为止,我在 powershell 中"MOD15A2H.A"
使用以下命令"L"
将其替换".h26v06.001."
为""
>get-childitem -recurse | rename-item -newname {$_.name -replace 'MOD15A2H.A','L'}
>get-childitem -recurse | rename-item -newname {$_.name -replace '.h26v06.001.',''}
现在,请给我一些建议,关于删除所有文件名称中不同的剩余部分。
答案1
如果我在特定目录中有 10 个文件,它们都是 .txt 文件,并且我想将扩展名更改为 .xml,我可以导航到该目录,然后输入:
ren *.txt *.xml
答案2
答案3
尝试这个(你需要在正则表达式中用反斜杠转义点):
Get-Childitem -recurse | Foreach {
Get-Item $File.Fullname | Rename-Item {$_.name -replace 'MOD15A2H\.A','L'}
Get-Item $File.Fullname | Rename-Item {$_.name -replace '\.h26v06\.001\.',','}
}
答案4
您可以尝试使用Get-Item
和Split
:foreach
get-childitem "F:\MOD15A2H_GTiFF\LAI\*.tif" -recurse | % { rename-item $_.fullname -newname ('L'+$_.name.split('A.*/')[3]+$_.Extension) -WhatIf }
- 或者,使用别名...
gi "F:\MOD15A2H_GTiFF\LAI\*.tif" | % { ren $_.fullname -new ('L'+$_.name.split('.A*/')[-6]+$_.Extension) -WhatIf }
- 您的输出使用
-WhatIf
What if: Performing the operation "Rename File" on target "Item: F:\MOD15A2H_GTiFF\LAI\MOD15A2H.A2012001.h26v06.001.230181014_LAI500m.tif Destination: F:\MOD15A2H_GTiFF\LAI\L2012001.tif".
What if: Performing the operation "Rename File" on target "Item: F:\MOD15A2H_GTiFF\LAI\MOD15A2H.A2012009.h26v06.001.236194306_LAI500m.tif Destination: F:\MOD15A2H_GTiFF\LAI\L2012009.tif".
- 生成的输出
-WhatIf
允许您预览执行情况,但要有效地重命名文件,只需将其删除:
get-childitem "F:\MOD15A2H_GTiFF\LAI\*.tif" -recurse | % { rename-item $_.fullname -newname ('L'+$_.name.split('A.*/')[3]+$_.Extension) -WhatIf}
ls -r "F:\MOD15A2H_GTiFF\LAI\*.tif" | % { ren $_.fullname -new ('L'+$_.name.split('.A*/')[-6]+$_.Extension) -WhatIf}
- 输出结果
MOD15A2H.A2012001.h26v06.001.230181014_LAI500m.tif ⇿ L2012001.tif
MOD15A2H.A2012009.h26v06.001.236194306_LAI500m.tif ⇿ L2012009.tif
观察: 对于您的情况,有一种替代方法,由于名称中的字符串是固定的,因此您可以使用子字符串轻松地组成新名称:
MOD15A2H.A2012001.h26v06.001.2015230181014_LAI500m.tif
'L' +|_________|(10,07)|___________________________________|+ '.tif'
MOD15A2H.A2012001.h26v06.001.2015230181014_LAI500m.tif
get-childitem "F:\MOD15A2H_GTiFF\LAI\*.tif" -recurse | % { rename-item $_.fullname -newname ('L'+$_.basename.Substring(10,7)+$_.Extension)}
ls "F:\MOD15A2H_GTiFF\LAI\*.tif" -r|% {ren $_.fullname -new ('L'+$_.basename.Substring(10,7)+'.tif')}
- 并且您有相同的输出/结果:
What if: Performing the operation "Rename File" on target "Item: F:\MOD15A2H_GTiFF\LAI\MOD15A2H.A2012001.h26v06.001.230181014_LAI500m.tif Destination: F:\MOD15A2H_GTiFF\LAI\L2012001.tif".
What if: Performing the operation "Rename File" on target "Item: F:\MOD15A2H_GTiFF\LAI\MOD15A2H.A2012009.h26v06.001.236194306_LAI500m.tif Destination: F:\MOD15A2H_GTiFF\LAI\L2012009.tif".
进一步阅读:
[√]分裂
[√]% | Foreach
[√]ls | 获取项目
[√]ren | 重命名项目