我一直试图让这个工作没有成功。我在这里和其他地方搜索过帮助并尝试了我能想到的一切,问题是它选择了额外的文本,然后我在 powershell 脚本中遇到错误,因为文件名包含系统字符的奇数字符。
我有多个文件,它们是纯文本文件。这是我需要从中选择和重命名的特定文本行
"RECORDER ID: TEST1234 GROUP: TEST START TIME: 08/09/22 02:01"
后面有多个空格TEST1234
(比如十个或更多空格) 这是文件中 txt 的第 3 行。第二行文字为空白。
文件名当前是一串数字“.EU”我想TEST1234.EU
根据上面的例子将文件重命名为“”。这是我试过的脚本
cd C:\temp
$files = [System.Collections.ArrayList]@()
select-string -Path "*.*" -Pattern "RECORDER ID:" | ForEach-Object {
$old_filename = $_.Filename
$new_filename = $_.line -replace "^.*RECORDER ID = ""","" -replace """.*$",""
$null = $files.Add(@{"old"=$old_filename;"new"=$new_filename})
}
$files |ForEach-Object{
$old_filename = $_.old
$new_filename = $_.new
rename-item $old_filename $new_filename -Force
}
$new_filename
最终包含整个模式字符串,我需要在 之后的第一个空格之后将其拆分TEST124
,但我无法弄清楚如何拆分它,因此它是一个有效的文件名