Isso não é tão elegante quanto a resposta de dbenham, mas é puro Windows. Se a saída do seu programa sempre se parece com o seu exemplo (uma seqüência de dígitos imediatamente seguida por uma letra minúscula e depois seguida por outras coisas), isso vai funcionar:
for /f "delims=abcdefghijklmnopqrstuvwxyz" %x in ('C:\MyExe -param') do echo %x > out.txt
Notas:
- Se o último dígito puder ser seguido por um caractere diferente de uma letra minúscula (até mesmo um espaço),
inclua todos os caracteres delimitadores possíveis na string
delims=
. - O comando acima funcionará se for digitado em um prompt de comando interativo.
Para usá-lo em um arquivo em lotes (por exemplo, um script do Prompt de Comando), altere
%x
para%%x
(ambas as ocorrências). -
O comando acima executará o subcomando
echo %x > out.txt
uma vez para cada linha de saída deC:\MyExe -param
que contém pelo menos um caractere delimitador. Se o seu programa escreve apenas essa linha, não há problema. Se você programa grava várias dessas linhas, por exemplo,5gold rings 4calling birds 3french hens 2turtle doves 1partridge
ele substituirá o arquivo todas as vezes e você terá apenas o último valor. Se você quiser capturar todos os números, adicione parênteses, como este:
(for /f "delims=abc…xyz" %x in ('C:\MyExe -param') do echo %x) > MyOutputFile.txt ↑ ↑
para que todo o comando (até
echo %x
) seja tratado como um único comando e o redirecionamento (>
) ocorrerá apenas uma vez. Como alternativa, basta alterar o>
para>>
e as saídas serão acumuladas (mas também, qualquer coisa que estava no arquivo antes ainda estará lá, com a nova saída anexada a ele).