Войти

Показать полную графическую версию : Замена части информации в файлах txt на имя папки


Scooop
16-08-2022, 15:44
Добрый день форумчане.
Нужна срочная помощь.
Есть группа файлов разложенная по разным папкам, файлы формата *.22O, но внутри обычный txt.
Суть задачи:
1. Найти все файлы в подкаталогах исходного каталога, при этом нужны файлы в пути к которым присутствует слово rinex.
*\12345\2\20220609\472593\Кожино_КТ_001\файлы данных в формате rinex\K0011600.22o - этот должен быть найден
*\12345\2\20220609\ДГС Сергиев Посад\SPSS_090622.0510_090622.1520_730321.22o - этот НЕ должен меняться

2. В найденных файлах, нужно заменить данные в строке 4 и 5

2 OBSERVATION DATA M RINEX VERSION / TYPE
LEICA GEO OFFICE 7.0 10-6-22 15:40 PGM / RUN BY / DATE
Ткачук В.С. АО ВАГП OBSERVER / AGENCY
0001 MARKER NAME
0001 MARKER NUMBER
472593 LEICA GX1230GG 7.01 REC # / TYPE / VERS
08500004 LEIAX1202GG ANT # / TYPE
2743318.5900 2240299.1118 5286791.3241 APPROX POSITION XYZ
1.6890 0.0000 0.0000 ANTENNA: DELTA H/E/N

На имя папки на два уровня выше *\12345\2\20220609\472593\Кожино_КТ_001\файлы данных в формате rinex\K0011600.22o
При этом количество заменяемых символов должно соответствовать длине нового имени, т.е. выделяются старые данные + пробелы.

В итоге получается так:

2 OBSERVATION DATA M RINEX VERSION / TYPE
LEICA GEO OFFICE 7.0 10-6-22 15:40 PGM / RUN BY / DATE
Ткачук В.С. АО ВАГП OBSERVER / AGENCY
Кожино_КТ_001 MARKER NAME
Кожино_КТ_001 MARKER NUMBER
472593 LEICA GX1230GG 7.01 REC # / TYPE / VERS
08500004 LEIAX1202GG ANT # / TYPE
2743318.5900 2240299.1118 5286791.3241 APPROX POSITION XYZ
1.6890 0.0000 0.0000 ANTENNA: DELTA H/E/N

DJ Mogarych
16-08-2022, 17:59
Powershell:

dir "D:\temp\12345" -Recurse |? {!$_.psiscontainer -and $_.fullname -match "rinex"} |% {
$r = $_.fullname.split('\')[-3]
$txt = (gc $_.FullName) -replace "\d{4}( MARKER (NAME|NUMBER))",($r + '$1')
$txt |Set-Content $_.fullname
}

Особенно не тестировал, проверьте сначала на пробном наборе данных.




© OSzone.net 2001-2012