大家好,
我在使用以下脚本时遇到问题。这是要求:
1)每个文本文件需要与单个CSV文件进行比较。 CSV文件包含文本文件中应存在的数据。
2)如果文本文件中的数据匹配,则仅输出匹配项并运行作业等。
3)如果文本文件与CSV文件不匹配,请退出0,因为找不到匹配项。
我试过这样做,但我最终得到的是比赛,也是非比赛。我真正需要的是匹配行,运行作业,退出,如果文本文件没有匹配,则返回0
$CSVFIL = Import-Csv -Path $DRIVE\test\csvfile.csv
$TEXTFIL = Get-Content -Path "$TEXTFILFOL\*.txt" |
Select-String -Pattern 'PAT1' |
Select-String -Pattern 'PAT2' |
Select-String -Pattern 'TEST'
ForEach ($line in $CSVFIL) {
If ($TEXTFIL -match $line.COL1) {
Write-Host 'RUNNING:' ($line.JOB01)
} else {
write-host "No Matches Found Exiting"
答案 0 :(得分:0)
我会以不同的方式处理这个问题。首先,您需要找到匹配项,如果有匹配项,则处理其他输出0。
$matches = @()
foreach ($line in $CSVFIL)
{
if ($TEXTFIL -contains $line.COL1)
{ $matches += $line }
}
if ($matches.Count -gt 0)
{
$matches | Foreach-Object {
Write-Output "Running: $($_.JOB01)"
}
}
else
{
Write-Output "No matches found, exiting"
}
答案 1 :(得分:0)
$CSVFIL = Import-Csv -Path "$DRIVE\test\csvfile.csv"
Get-Content -Path "$TEXTFILFOL\*.txt" |
where {$_ -like "*PAT1*" -and $_ -like "*PAT2*" -and $_ -like "*TEST*" } |
%{
$TEXTFOUNDED=$_; $CSVFIL | where {$TEXTFOUNDED -match $_.COL1} |
%{ [pscustomobject]@{Job=$_.JOB01;TextFounded=$TEXTFOUNDED;Col=$_.COL1 } }
}