Я пытаюсь создать скрипт, который поможет мне заменить содержимое в 2 файлах.Файл A ($Content_1
) является основным файлом, а файл B ($Content_2
) - это элементы, которые мне нужно заменить.Все «a, b, c, d» - это уникальный ключ.Затем я хочу выполнить цикл для всего содержимого в $Content_2
и заменить на $Content_1
.Но в итоге результат покажет только второй цикл, и первый цикл будет проигнорирован.
$Path_1 = "C:...\Test\Testing.xml"
$Path_2 = "C:...\Test\Test.txt"
$Content_1 = Get-Content $Path_1
$Content_2 = Get-Content $Path_2
[string[]]$List = $Content_1
[string[]]$List2 = $Content_2
[string[]]$KeyList = ""
$Line2 = $List2.Length
for ($i=0; $i -lt $Line2; $i++) {
$key = $List2[$i]
$key = $key.Split('"')
$key = $key[1]
$key = $key.Split(',')
$key = $key[0]
$KeyList += $key
}
$Count = $KeyList.count
for ($j=0; $j -lt $Count - 1; $j++) {
if ($KeyList -ne "") {
$regex = [regex]::Match($List, $KeyList.GetValue($j+1))
$Line = ($List | Select-String $regex.Value)
if ($Line.Count -gt 1) {
$Line = ($List | Select-String $regex.value) -notmatch "!--"
}
}
$Content_1 -replace ($Content_1[$Line.LineNumber - 1], $Content_2[$j]) |
Set-Content $Path_1
}
$Content_2
детали:
<add key="CONN_STRING" value="Data Source=ABC; database=Test; uid=sa; pwd=5005; "/>
<add assembly="System.Web.Abstractions, Version=4.0.0.1, Culture=neutral, PublicKeyToken=0000"/>
$Content_1
детали:
<?xml version="1.0"?>
<configuration>
<appSettings>
<!--<add key="CONN_STRING" value="Data Source=ABC; database=Test; Integrated Security=SSPI;"/>-->
<add key="CONN_STRING" value="Data Source=ABC; database=Test; uid=sa; pwd=123456; "/>
<!--<add key="CONN_STRING" value="Data Source=BCD; database=TestField; uid=sa; pwd=12345; "/>-->
<add key="UploadFolder" value="D:\..."/>
</appSettings>
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0000"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=1234"/>
</assemblies>
</configuration>
Системный результат:
<?xml version="1.0"?>
<configuration>
<appSettings>
<!--<add key="CONN_STRING" value="Data Source=ABC; database=Test; Integrated Security=SSPI;"/>-->
<add key="CONN_STRING" value="Data Source=ABC; database=Test; uid=sa; pwd=5005; "/>
<!--<add key="CONN_STRING" value="Data Source=BCD; database=TestField; uid=sa; pwd=12345; "/>-->
<add key="UploadFolder" value="D:\..."/>
</appSettings>
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0000"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=1234"/>
</assemblies>
</configuration>
<?xml version="1.0"?>
<configuration>
<appSettings>
<!--<add key="CONN_STRING" value="Data Source=ABC; database=Test; Integrated Security=SSPI;"/>-->
<add key="CONN_STRING" value="Data Source=ABC; database=Test; uid=sa; pwd=123456; "/>
<!--<add key="CONN_STRING" value="Data Source=BCD; database=TestField; uid=sa; pwd=12345; "/>-->
<add key="UploadFolder" value="D:\..."/>
</appSettings>
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.1, Culture=neutral, PublicKeyToken=0000"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=1234"/>
</assemblies>
</configuration>
Желаемый результат:
<?xml version="1.0"?>
<configuration>
<appSettings>
<!--<add key="CONN_STRING" value="Data Source=ABC; database=Test; Integrated Security=SSPI;"/>-->
<add key="CONN_STRING" value="Data Source=ABC; database=Test; uid=sa; pwd=5005; "/>
<!--<add key="CONN_STRING" value="Data Source=BCD; database=TestField; uid=sa; pwd=12345; "/>-->
<add key="UploadFolder" value="D:\..."/>
</appSettings>
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.1, Culture=neutral, PublicKeyToken=0000"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=1234"/>
</assemblies>
</configuration>
Сохраненный результат:
<?xml version="1.0"?>
<configuration>
<appSettings>
<!--<add key="CONN_STRING" value="Data Source=ABC; database=Test; Integrated Security=SSPI;"/>-->
<add key="CONN_STRING" value="Data Source=ABC; database=Test; uid=sa; pwd=123456; "/>
<!--<add key="CONN_STRING" value="Data Source=BCD; database=TestField; uid=sa; pwd=12345; "/>-->
<add key="UploadFolder" value="D:\..."/>
</appSettings>
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.1, Culture=neutral, PublicKeyToken=0000"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=1234"/>
</assemblies>
</configuration>