Заменить текст в цикле - PullRequest
       1

Заменить текст в цикле

0 голосов
/ 27 сентября 2019

Я пытаюсь создать скрипт, который поможет мне заменить содержимое в 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...