PowerShell: сопоставить строку, добавить текст конца строки в нескольких файлах - PullRequest
0 голосов
/ 05 марта 2020

У меня есть несколько файлов в папке, которые я пытаюсь найти в строке «Имя =», а затем добавляю текст в конце строки «ОБЛАСТЬ: ...». Код работает, однако он помещает ВСЕ содержимое ВСЕХ файлов в каждый файл. Я понимаю, что мне нужно перебирать каждый файл, но я пытаюсь использовать al oop для соответствия, а затем l oop каждый файл, чтобы он не добавил все содержимое. Я очень новичок в PowerShell и ценю любую помощь и ваших пациентов. Спасибо

$filepaths = 'C:\Users\test\test\*.txt' 

foreach ($filename in $filepaths)
{
   (Get-Content $filename) |
    foreach {          
        if ($_ -match "Name=")
        {            
             "$_   AREA:   KIT:"             
        }
        else
        {
            $_
        }                          
       } | set-Content $filename
}

Благодаря AdminOfThings работает следующий код

$filepaths = 'C:\Users\test\test\*.txt' 

foreach ($filename in (get-item $filepaths))
{
   (Get-Content $filename) |
    foreach {          
        if ($_ -match "Name=")
        {            
             "$_   AREA:   KIT:"             
        }
        else
        {
            $_
        }                          
       } | set-Content $filename
}

1 Ответ

0 голосов
/ 06 марта 2020

Если вам нужно установить строку для любой строки, содержащей в любом порядке «Имя =», вы должны сделать это следующим образом:

$filepaths = 'C:\Users\test\test\*.txt'     
foreach ($filename in (get-item $filepaths)){
  (Get-Content $filename) |foreach {          
    if ($_ -match "Name="){            
    $_.Insert($_.Length," AREA:   KIT:")         
    }
    else{
    $_
    }                          
  } | set-Content $filename
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...