如何在PowerShell中忽略文件的一部分并重命名其他文件

时间:2019-03-21 14:29:43

标签: powershell

我当前正在运行一个脚本,该脚本替换文件的某些指定字符。我注意到最近有些文件的文件名中有相似的字符。我只想在_之后重命名文件名的一部分。

示例文件名:

WB03042019_1226324201

我当前的脚本:

Get-ChildItem *4201.dat | foreach {
    Rename-Item $_ $_.Name.Replace("4201", "hfmau2")
}

我的问题是,这会产生以下文件名:

WB030hfmau29_122632hfmau2

1 个答案:

答案 0 :(得分:0)

由于您的问题并未显示所需的文件名,因此尚不清楚。

如果您只想更改文件名末尾和下划线后的“ 4201”,则可以使用以下方法:

Get-ChildItem -Path '<PATH TO THE FILES>' -Filter *4201.dat -File | 
    Rename-Item -NewName {'{0}{1}' -f ($_.BaseName -replace '4201$','hfmau2'), $_.Extension}

产生新的文件名:

  

WB03042019_122632hfmau2.dat

如果您想更改下划线后的所有内容,而“ 4201”只是用于过滤文件,则应执行以下操作:

Get-ChildItem -Path '<PATH TO THE FILES>' -Filter *4201.dat -File | 
    Rename-Item -NewName {'{0}{1}' -f ($_.BaseName -replace '(.+_)(\w+)$','$1hfmau2'), $_.Extension}

产生新的文件名:

  

WB03042019_hfmau2.dat

如果这不是您想要的,请Edit您的问题,并向我们显示所需的新文件名。