Isso deve funcionar em Powershell. Ele lê a primeira letra de cada linha, se não for D, não irá verificar se há um código de erro.
Se a linha começar com a letra D, ela lerá entre o 17º e o 20º caractere e exibirá os códigos de erro, se for 503, 504, 511 ou 611. Espero que isso ajude.
$content = Get-Content -path C:\USERS\path\to\codes.txt
foreach ($line in $content)
{
$firstLetter = $line.Substring(0,1)
if ($firstLetter -eq "D")
{
$errorCode = $line.Substring(17,3)
switch ($errorCode)
{
'503'
{
Write-host $errorCode
}
'504'
{
Write-host $errorCode
}
'511'
{
Write-host $errorCode
}
'611'
{
Write-host $errorCode
}
}
}
}
Minha entrada foi um arquivo txt contendo
H0001200008143800120918155209
D43442371013477773520000001280012091800001
D43442371011722225110000000900012091800001
D43442371007692925040000007200012091800001
A saída do script é
511
504