Пакетный эквивалент Баш обратные кавычки
при работе с Bash я могу поместить вывод одной команды в другую команду следующим образом:
my_command `echo Test`
было бы то же самое, что
my_command Test
(очевидно, это просто непрактичный пример.)
мне просто интересно, если вы можете сделать то же самое в партии.
5 ответов:
вы можете сделать это, перенаправив вывод в файл в первую очередь. Например:
echo zz > bla.txt set /p VV=<bla.txt echo %VV%
вы можете получить аналогичную функциональность с помощью cmd.exe скрипты с помощью :
for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a
Да, это не очевидно (мягко говоря), но это то, что есть.
посмотреть
for /?
для подробностей.Sidenote: я думал, что использовать "
echo
"внутри задних палочек в"for /f
" команда должна быть выполнена с помощью "cmd.exe /c echo Test
" Сecho
- это внутренняя командаcmd.exe
, но это работает более естественным образом. Пакет Windows сценарии всегда меня как-то удивляют (но обычно не в хорошем смысле).
прочитайте документацию для команды "for":
for /?
к сожалению, я не вошел в Windows, чтобы проверить это сам, но я думаю, что что-то вроде этого может приблизиться к тому, что вы хотите:
for /F %i in ('echo Test') do my_command %i
может быть, я испортил синтаксис стандарта
for /f
метод, но когда я ставлю очень сложную команду с участием && и | в пределах обратных палочек в пределеfor /f
, это вызывает проблемы. Небольшая модификация от обычной позволяет обрабатывать команду произвольной сложности:SET VV=some_command -many -arguments && another_command -requiring -the-other -command | handling_of_output | more_handling for /f "usebackq tokens=*" %%a in (`%VV%`) do mycommand %%a
сначала помещая полную и сложную команду в переменную, а затем помещая ссылку на переменную в предел, а не помещая сложную команду непосредственно в переменную предел цикла for, вы можете избежать проблем с интерпретацией синтаксиса. В настоящее время, если я копирую точную команду, которую я установил в
VV
переменная в примере выше, где она используется,%VV%
, это вызывает синтаксические ошибки.