我有一个软件每天导出多个没有扩展名的文件,但实际上是文本文件。 文件名始终如下:
RESULTS10220309014171
RESULTS10220309014231
RESULTS10220309015778
RESULTS10220309014131
所有文件的内容(Hl7协议行)如下:
MSH|^~\&|AppName||LIS||20190501004420||ORU^R01|1905011A91C6C2450|P|2.3|||NE|SU
PID|1||602239||^^|||||||||||||
PV1|1||||||||||||||||||
....
因此前3行始终相同。 我想从以PID开头的第二行中提取数字602239,并将文件重命名为:
602239
552547
336587
696334
取决于第二行中的数字。
我已经搜索并尝试了多个代码,但是没有用,我是PowerShell的初学者,所以我将非常感谢您的帮助。
答案 0 :(得分:0)
Get-ChildItem -Filter RESULTS* | ForEach-Object { # Loop over files of interest
$pidLine = (Get-Content $_.FullName -Head 2)[-1] # Extract 2nd line
$newName = ($pidLine -split '\|+')[2] # Get 3rd field
$_ | Rename-Item -NewName $newName -WhatIf # Rename input file
}
注意:上方命令中的-WhatIf
common parameter会预览该操作。确定操作将执行您想要的操作后,请删除-WhatIf
。