在 Powershell 中重命名文件,删除“_”之后的所有内容

问题描述 投票:0回答:2

我正在重命名数百个文件,所有这些文件都因项目 ID 以及后面的一堆文本而异。例如...

BBAT300_abcdefg.xls BBAT400_abcdefg.xls

我需要删除下划线中的所有内容,并包括下划线,所以结果是这样的:

BBAT300.xls BBAT400.xls

我之前发现了这段代码...

Get-ChildItem -Name -Filter *.xls | foreach {[Regex]::Match($_,"^[^_]*").Value}

它似乎有效,但我无法让它实际重命名文件。我对脚本的了解很少,所以这可能是一个简单的修复,我只是似乎找不到它。 Powershell 将在 powershell 中显示结果,但不会实际重命名文件。

file powershell file-rename
2个回答
0
投票

您可以将此行通过管道传输到重命名项目命令:

Get-ChildItem -Filter *.txt | Foreach-Object -Process { 
    $NewName = [Regex]::Match($_.Name,"^[^_]*").Value + '.txt'
    $_ | Rename-Item -NewName $NewName
}

编辑:更改它以支持任何位置


0
投票
gci *.txt -Recurse -Force  -ErrorAction SilentlyContinue | Rename-Item -NewName {($_.name.SubString(0, $_.name.LastIndexOf('_')) + $_.extension)}
© www.soinside.com 2019 - 2024. All rights reserved.