@JustMoose
Программист. Радиолюбитель. Прокрастинатор ;)

Как перенаправить вывод одной команды в _аргумент_ другой команды?

Всем привет.
Я слегка запутался :)
Обычно в ОС (DOS, win) используются (наверное) два варианта входных данных для программ.
1. программа ожидает ввод (например, more)
2. программа читает аргументы командной строки (type)

Есть конвейер, который удобно применять с типом 1.
Например type <текстовый файл> | more отлично перекинет весь текст из одной программы в другую.
Можно даже перенаправление использовать: more <текстовый файл

Собственно вопрос: а что делать, если я хочу использовать конвейер/перенаправление, но программа (например type), поддерживает только аргументы командной строки и обычный ввод никак не принимает?

Например, я хочу найти в папке все файлы .bat и вывести их на экран.
Пишу:
dir /b | find ".bat" | type
И, конечно, ничего не работает.
Потому что type ожидает, что ей дадут аргумент. А не "ввод".

Вопрос: как запихать "ввод" в какой-нибудь аргумент, и сделать это внутри cmd|bat файла? Возможно ли это?
(Ну, type то можно обмануть, если зафиксировать имя файла. А что делать, если нужно прокидывать произвольную строку?)
  • Вопрос задан
  • 2932 просмотра
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
перенаправить вывод в файл затем из файла в переменную
dir /b| find ".bat" > tmp
SET /P TMPS=<tmp
del tmp
type %TMPS%
pause

еще можно через FOR так как он принимает вывод
FOR /F "tokens=*" %%a IN ('dir /b ^| find ".bat"') DO type %%a

разница лишь в том что в первом случае в переменной будет весь файл а FOR разобьет построчно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы