在 Powershell 中重命名文件,删除“_”后的所有内容
Rename files in Powershell deleting everything after "_"
我正在重命名数百个文件,所有文件都因项目 ID 而异,然后是一堆文本。例如...
BBAT300_abcdefg.xls
BBAT400_abcdefg.xls
我需要删除下划线中的所有内容,包括下划线,所以结果是这样的:
BBAT300.xls
BBAT400.xls
我之前发现了这段代码...
Get-ChildItem -Name -Filter *.xls | foreach {[Regex]::Match($_,"^[^_]*").Value}
它似乎可以工作,但我无法让它真正重命名文件。我对脚本编写的了解很少none,所以这可能是一个简单的修复,但我似乎找不到它。 Powershell 将在 powershell 中显示结果,但不会实际重命名文件。
您可以将此行通过管道传递给重命名项目命令:
Get-ChildItem -Filter *.txt | Foreach-Object -Process {
$NewName = [Regex]::Match($_.Name,"^[^_]*").Value + '.txt'
$_ | Rename-Item -NewName $NewName
}
编辑:将其更改为支持任何位置
我正在重命名数百个文件,所有文件都因项目 ID 而异,然后是一堆文本。例如...
BBAT300_abcdefg.xls BBAT400_abcdefg.xls
我需要删除下划线中的所有内容,包括下划线,所以结果是这样的:
BBAT300.xls BBAT400.xls
我之前发现了这段代码...
Get-ChildItem -Name -Filter *.xls | foreach {[Regex]::Match($_,"^[^_]*").Value}
它似乎可以工作,但我无法让它真正重命名文件。我对脚本编写的了解很少none,所以这可能是一个简单的修复,但我似乎找不到它。 Powershell 将在 powershell 中显示结果,但不会实际重命名文件。
您可以将此行通过管道传递给重命名项目命令:
Get-ChildItem -Filter *.txt | Foreach-Object -Process {
$NewName = [Regex]::Match($_.Name,"^[^_]*").Value + '.txt'
$_ | Rename-Item -NewName $NewName
}
编辑:将其更改为支持任何位置