#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: Вы правы. Однако попытки передать несколько строк в аргументе командной строки настолько редки, что я не подумал, что об этом стоит упоминать.