Как оценить параметры в пакетном файле

#windows #batch-file #redirect

#Windows #пакетный файл #перенаправление

Вопрос:

В оболочке * nix вы можете сказать:

 foo `bar | baz`;
  

перенаправить вывод bar | baz в аргумент foo .

Как это сделать в пакетном файле Windows?

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

1. Вы проверили for /f ?

2. @Gabe: Нет… Я только что посмотрел на это, но я не могу понять, как это работает / помогает…

3. FOR /F ["options"] %variable IN ('command') Синтаксис предоставляет способ обработки выходных данных команды. Затем вы можете сделать что-то вроде FOR /F %x IN ('bar | baz') DO foo %x .

4. @Gabe: Это ответ, который я искал, спасибо!! Отправьте это в качестве ответа, пожалуйста, и я приму его. 🙂

Ответ №1:

FOR /F ["options"] %variable IN ('command') Синтаксис предоставляет способ обработки выходных данных команды. Затем вы можете сделать что-то вроде FOR /F %x IN ('bar | baz') DO foo %x .

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

1. @Mehrdad: Если я не ошибаюсь, есть разница в многострочном выводе, о которой вы должны знать. В *nix весь вывод будет заменен на bar | baz и поэтому foo будет вызван один раз. С FOR /F вы получите несколько вызовов foo для каждой строки, созданной 'bar | baz' . Если я ошибаюсь, я уверен, что меня исправят.

2. @Andriy: Спасибо за предупреждение, я запомню это.

3. @Andriy: Вы правы. Однако попытки передать несколько строк в аргументе командной строки настолько редки, что я не подумал, что об этом стоит упоминать.