Использование командного вывода в DOS

#scripting #command-line #dos #command-prompt

#написание сценариев #командная строка #dos

Вопрос:

Я хотел бы запустить команду в DOS, которая использует вывод другой команды в качестве своей части, что-то, что одна обратная кавычка (`) позволяет делать в UNIX или Linux.

Например, если myCommand возвращает список файлов, я хотел бы выполнить в DOS какой-нибудь аналог команды UNIX

 grep `myCommand`
  

Как бы это сделать в DOS?
Заранее благодарю вас за вашу помощь.

Комментарии:

1. Если под «DOS» подразумевается «cmd.exe в Windows», затем рассмотрите PowerShell как современную альтернативу этому пережитку. Аналогично, рассмотрим один из нескольких портов «Unix util». Черт возьми, есть некоторые действительно старые программы и для MS-DOS, такие как Unix-подобные программы MS-DOS

Ответ №1:

Вы можете передавать две команды:

 command1 | command2
  

Но существует не так уж много команд, ввод / вывод которых хорошо сочетается друг с другом. Вероятно, вам лучше всего использовать цикл for. Основной синтаксис таков:

 for /f %A in ('command1') do command2 %A
  

Ответ №2:

Если только вы не попробуете for %%i in … синтаксис, я не вижу надежды в DOS. DOS — это не Unix.

Другим решением является создание нового пакета с использованием цикла for (с @ и echo) и запуск нового пакета в конце.

Возможно, вам потребуется выполнить это рекурсивно.