PowerShell:匹配字符串,在多个文件中添加文本行尾

时间:2020-03-05 20:46:39

标签: powershell

我在一个文件夹中有多个文件,试图与字符串“ Name =”匹配,然后在“ AREA:...”行的末尾添加一些文本。该代码有效,但是,它将所有文件的所有内容放入每个文件中。我知道我需要遍历每个文件,但是我在为匹配使用循环而苦苦挣扎,然后循环每个文件,以便不添加所有内容。我是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 :(得分:0)

如果需要将字符串设置为以任何顺序包含“ Name =”的任何字符串,则必须执行以下操作:

$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
}