Переименовать несколько файлов из их содержимого - PullRequest
1 голос
/ 09 ноября 2019

У меня есть программа, которая экспортирует несколько файлов ежедневно без расширений, но на самом деле это текстовые файлы. имена файлов всегда следующие:

RESULTS10220309014171     
RESULTS10220309014231   
RESULTS10220309015778   
RESULTS10220309014131    

Содержимое всех файлов (строки протокола Hl7) выглядит следующим образом:

MSH|^~\&|AppName||LIS||20190501004420||ORU^R01|1905011A91C6C2450|P|2.3|||NE|SU   
PID|1||602239||^^|||||||||||||   
PV1|1||||||||||||||||||   
....   

Таким образом, первые 3 строки всегда одинаковы. Я хочу взять цифры 602239 из второй строки, которая начинается с PID, и переименовать файлы с таким именем:

602239   
552547   
336587   
696334 

зависит от цифр во второй строке.

Я искал и пробовал несколько кодов, но это не сработало, я новичок в PowerShell, поэтому буду признателен за помощь.

1 Ответ

0 голосов
/ 10 ноября 2019
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, как только вы убедитесь, что операция будет выполнять то, что вы хотите.

...