首页 > 解决方案 > 从内容中重命名多个文件

问题描述

我有一个软件每天导出多个没有扩展名的文件,但它实际上是文本文件。文件名始终如下:

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 的初学者,所以我将不胜感激。

标签: powershellrename

解决方案


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常用参数是预览操作。-WhatIf 一旦您确定该操作将执行您想要的操作,请删除。


推荐阅读