仅考虑最后一场比赛的Powershell foreach$行

仅考虑最后一场比赛的Powershell foreach$行,powershell,foreach,match,Powershell,Foreach,Match,我希望列出所有匹配项,但我只得到输出文件中的最后一个匹配项 输入文件(ADO): TOTAL 0000002500 TAX 0000000000 TOTAL 0000001250 TAX 0000002520 TOTAL 0000006250 TAX 0000001820 TOTAL 0000007550 TAX 0000005820 foreach ( $File in ( get-childitem -name $ADO)) { foreach ($_ in (

我希望列出所有匹配项,但我只得到输出文件中的最后一个匹配项

输入文件(ADO):

TOTAL 0000002500
TAX   0000000000
TOTAL 0000001250
TAX   0000002520
TOTAL 0000006250
TAX   0000001820
TOTAL 0000007550
TAX   0000005820
foreach ( $File in ( get-childitem -name $ADO))
{       foreach ($_ in ( Get-Content -path $ADO))
          {
           # Declaring Variable: Total_Amt
           if ( $_.substring(0,5) -Like "TOTAL")   {
           $TOTAL_AMT = $_.substring(6,10)
            }
            }
            # iterate through ADO file and using above declared variables
        foreach ($_ in ( Get-Content -path $ADO))
         {      
          "TOTAL_AMT" + $TOTAL_AMT  >   $ADO_TMP
         }
  }
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
Powershell脚本:

TOTAL 0000002500
TAX   0000000000
TOTAL 0000001250
TAX   0000002520
TOTAL 0000006250
TAX   0000001820
TOTAL 0000007550
TAX   0000005820
foreach ( $File in ( get-childitem -name $ADO))
{       foreach ($_ in ( Get-Content -path $ADO))
          {
           # Declaring Variable: Total_Amt
           if ( $_.substring(0,5) -Like "TOTAL")   {
           $TOTAL_AMT = $_.substring(6,10)
            }
            }
            # iterate through ADO file and using above declared variables
        foreach ($_ in ( Get-Content -path $ADO))
         {      
          "TOTAL_AMT" + $TOTAL_AMT  >   $ADO_TMP
         }
  }
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
输出文件(ADO\U TMP):

TOTAL 0000002500
TAX   0000000000
TOTAL 0000001250
TAX   0000002520
TOTAL 0000006250
TAX   0000001820
TOTAL 0000007550
TAX   0000005820
foreach ( $File in ( get-childitem -name $ADO))
{       foreach ($_ in ( Get-Content -path $ADO))
          {
           # Declaring Variable: Total_Amt
           if ( $_.substring(0,5) -Like "TOTAL")   {
           $TOTAL_AMT = $_.substring(6,10)
            }
            }
            # iterate through ADO file and using above declared variables
        foreach ($_ in ( Get-Content -path $ADO))
         {      
          "TOTAL_AMT" + $TOTAL_AMT  >   $ADO_TMP
         }
  }
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
预期输出文件:

TOTAL 0000002500
TAX   0000000000
TOTAL 0000001250
TAX   0000002520
TOTAL 0000006250
TAX   0000001820
TOTAL 0000007550
TAX   0000005820
foreach ( $File in ( get-childitem -name $ADO))
{       foreach ($_ in ( Get-Content -path $ADO))
          {
           # Declaring Variable: Total_Amt
           if ( $_.substring(0,5) -Like "TOTAL")   {
           $TOTAL_AMT = $_.substring(6,10)
            }
            }
            # iterate through ADO file and using above declared variables
        foreach ($_ in ( Get-Content -path $ADO))
         {      
          "TOTAL_AMT" + $TOTAL_AMT  >   $ADO_TMP
         }
  }
TOTAL_AMT0000007550
TOTAL_AMT0000002500
TOTAL_AMT0000001250
TOTAL_AMT0000006250
TOTAL_AMT0000007550
解决方案:


我对脚本做了一些调整,解决了这个问题。 谢谢你们的帮助

foreach ($_ in ( Get-Content -path $ADO))
{       
         if ($_.substring(0,5) -like "TOTAL") 
         {$TOTAL_AMT = $_.substring(6,10)
         "TOTAL_AMT" +  $TOTAL_AMT >>  $ADO_TMP
        } 
}

每次发现与
匹配时,您都会覆盖
$ADO\U TMP
文件。您需要使用追加运算符
>

"TOTAL_AMT" + $TOTAL_AMT  >>   $ADO_TMP

您还可以使用
where
过滤器获得所需的输出:

Get-Content $ADO| where { $_ -like 'TOTAL*' } | Set-Content $ADO_TMP

谢谢,但我认为这不是问题所在。现在我看到了多行,但结果相同
TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550 TOTAL\u amt00007550
我对脚本做了一些调整,解决了这个问题。谢谢你们的帮助<代码>foreach($uu-in(获取内容-路径$ADO)){if($u.substring(0,5)-类似于“TOTAL”){$TOTAL_u-AMT=$u.substring(6,10)“TOTAL_u-AMT”+$TOTAL_u-AMT>>$ADO_TMP}不起作用。得到了我在回复上述评论时提到的相同结果**脚本修改为:*
foreach($File-in(get-childitem-name$ADO)){foreach($#in(get-Content-path$ADO)){{声明变量:Total\u Amt if($#.substring(0,5)-类似“Total”){$Total\u Amt=$#.substring(6,10)}}#遍历ADO文件并使用上述声明的变量foreach($in(Get Content-path$ADO)){where{$Ike'TOTAL*}| Set Content$ADO_TMP}
我通过对脚本进行一些调整,解决了这个问题。谢谢你们的帮助
foreach($uu-in(Get Content-path$ADO)){if($u.substring(0,5)-类似于“TOTAL”){$TOTAL_-AMT=$u.substring(6,10)“TOTAL_-AMT”+$TOTAL_-AMT>>$ADO_-TMP}
我通过对脚本进行一些调整,解决了这个问题<代码>foreach($uu-in(获取内容-路径$ADO)){if($u.substring(0,5)-类似于“TOTAL”){$TOTAL_u-AMT=$u.substring(6,10)“TOTAL_u-AMT”+$TOTAL_u-AMT>>$ADO_TMP}