バッチ電子メール ジョブに使用するテキスト ファイルがあります。現在、電子メールが送信されないように、ファイルを手動で調べて特定のエントリにフラグ (eomm:) を設定する必要があります。このファイルには、数百行を含めることができます。ファイルのスナップショットは次のとおりです。
reci:
reci:
subj:
body:
body:
eomm:yes
reci:
reci:
subj:
body:Your request for...
body:
eomm:no
reci:
reci:
subj:
body:Your request for...
body:app_name
body:
eomm:yes
reci:
reci:
subj:
body:Your request for...
body:
eomm:yes
reci:
reci:
subj:
body:Your request for...
body:
body:
body: Please note that...
body:
body:Because the application you selected requires an install,...
eomm:yes
したがって、各メールは、2 つの「reci:」エントリ、1 つの「subj:」エントリ、2 つ以上の「body:」エントリ、および 1 つの「eomm:」エントリの順で開始されます。 現在、'body:' エントリが 2 つしかなく、'eomm:' 値が 'yes' に設定されているエントリを見つけて、'no' に変更する必要があります。 これは私が自動化する必要があるものです。
これまでのところ、このパターンを探してループするスクリプトがありますが、最後の一致のみを見つけます。(結果を出力ファイルに出力して、実際に何をしているかを確認しました)。これが私がこれまでに持っているものです:
$logfile = gc ./cstemail.txt
for ($i = 0; $i -lt $logfile.count; $i++) {
if ($logfile[$i] -match 'subj:') {
if ($logfile[$i + 1] -match 'body:') {
if ($logfile[$i + 2] -match 'body:') {
if ($logfile[$i + 3] -match 'eomm:yes') {
$logfile[$i + 3].replace('eomm:yes','eomm:no')
}
}
}
}
}
私の最終的なスクリプトは、これらの行を見つけて、「eomm:yes」を「eomm:no」に置き換える必要があります。私が持っているもので動作するはずですが、置換機能は動作しません。私も運が悪いので、次のことを試しました:
$logfile[$i + 3] -replace 'eomm:yes','eomm:no'