Это не так элегантно, как ответ dbenham, но это чисто Windows.
Если выходные данные вашей программы всегда выглядят как ваш пример (последовательность цифр, за которой сразу следует строчная буква, а затем другие элементы), это будет работать:
for /f "delims=abcdefghijklmnopqrstuvwxyz" %x in ('C:\MyExe -param') do echo %x > out.txt
Заметки:
- Если за последней цифрой может следовать символ, отличный от строчной буквы (даже пробел), включите все возможные символы разделителя в строку
delims=
.
- Приведенная выше команда будет работать, если она введена в интерактивную командную строку.
Чтобы использовать его в пакетном файле (т. Е. В сценарии командной строки), измените
%x
на %%x
(оба вхождения).
Приведенная выше команда выполнит подкоманду echo %x > out.txt
один раз для каждой строки вывода из C:\MyExe -param
который содержит хотя бы один символ-разделитель.
Если ваша программа записывает только одну строку, нет проблем.
Если ваша программа пишет несколько таких строк, например,
5gold rings
4calling birds
3french hens
2turtle doves
1partridge
он будет перезаписывать файл каждый раз, и вы получите только последнее значение.
Если вы хотите захватить все числа, добавьте скобки, например:
(for /f "delims=abc…xyz" %x in ('C:\MyExe -param') do echo %x) > MyOutputFile.txt
↑ ↑
поэтому вся команда (через echo %x
) будет обрабатываться как одна команда, а перенаправление (>
) произойдет только один раз.
В качестве альтернативы просто измените >
на >>
, и выходные данные будут накапливаться (но также все, что было в файле до того, все еще будет там, с новым добавленным к нему выходным сигналом).