首页 > 解决方案 > 如何在 PowerShell 中忽略文件的一部分并重命名另一个文件

问题描述

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

示例文件名:

WB03042019_1226324201

我当前的脚本:

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

我的问题是这会产生这个文件名:

WB030hfmau29_122632hfmau2

标签: powershell

解决方案


由于您的问题没有显示所需的文件名应该是什么,因此尚不清楚。

如果您只想更改文件名末尾和下划线后的“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

如果这不是您想要的,请编辑您的问题并向我们展示所需的新文件名应该是什么。


推荐阅读