PDA

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


ZerG666
27-10-2018, 14:10
Есть два файла, порядок строк и их количество не одинаковые, каждая строка начинается с символов $* и заканчивается параметр символом = далее идет значение, задача найти каждый параметр из первого файла во втором, и если он есть, то заменить значением из второго файла, если такого параметра нет во втором файле - перейти к следующему пераметру

Пример строк:

Что есть

$*abnormalStatusInfo-N08_Ogre_Leader_DefDown-description_k=· Reduces Physical Defense and Magical Defense each by 15% for each stack.
$*abnormalStatusInfo-K10_guido_shield-description_k=<font color='#e4f365'>Guido protects himself with magic.</font>
$*abnormalStatusInfo-N12_Elite_WhiteFox_Frozen-description_k=<font color='#e4f365'>Your feet are slowly becoming frozen.</font><br>\n· Reduces Movement Speed by 5%\n· Rooted if stacked 5 times

Что требуется

$*abnormalStatusInfo-N08_Ogre_Leader_DefDown-description_k=· -15% от физ. и маг. защиты при каждом повторении
$*abnormalStatusInfo-K10_guido_shield-description_k=· <font color='#e4f365'>Гвидо защищает себя темной магией.</font>
$*abnormalStatusInfo-N12_Elite_WhiteFox_Frozen-description_k=· <font color='#e4f365'>Ноги понемногу замерзают.</font><br>·\n-5% от скорости движения\nСвязывание после 5 применения

Kazun
27-10-2018, 14:54
Get-Content 2.txt | Foreach {$f2= @{}} {
$a,$b = $_.split("=",2)
$f2[$a]=$b
}

Get-Content 1.txt | Foreach {
$a,$b= $_.split("=",2)
if($f2[$a]) {
"{0}={1}" -f $a,$f2[$a]
} else {
$_
}
}

Iska
27-10-2018, 15:54
$a,$b= $_.split("=",2) »
Не знал, что тут можно и массив пользовать ;).

ZerG666
27-10-2018, 16:14
Спасибо, в итоге такой скрипт вышел, а что сделать чтоб он сам имена файлов брал из папки, количество не большое, но в ручную каждый лениво

$file2 = 'ENG\PetInfo.ENG'
$file1 = 'RUS\PetInfo.ENG'
$file3 = 'RUS_ENG\PetInfo.ENG'

Get-Content $file1 | Foreach {$f2= @{}} {
$a,$b = $_.split("=",2)
$f2[$a]=$b
}

Get-Content $file2 | Foreach {
$a,$b= $_.split("=",2)
if($f2[$a]) {
"{0}={1}" -f $a,$f2[$a]
} else {
$_
}
}|set-content $file3 -enc Default

Kazun
27-10-2018, 22:07
Get-ChildItem 'ENG\*.ENG' | Foreach {
$file2 = $_.FullName
$file1 = "C:\RUS\$($_.Name)"
$file3 = "C:\RUS_ENG\$($_.Name)"

Get-Content $file1 | Foreach {$f2= @{}} {
$a,$b = $_.split("=",2)
$f2[$a]=$b
}

Get-Content $file2 | Foreach {
$a,$b= $_.split("=",2)
if($f2[$a]) {
"{0}={1}" -f $a,$f2[$a]
} else {
$_
}
}|set-content $file3 -enc Default
}




© OSzone.net 2001-2012