Ответ 1
Вы можете сделать это, сначала перенаправляя вывод в файл. Например:
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
При работе с Bash я могу поместить вывод одной команды в другую команду следующим образом:
my_command `echo Test`
будет таким же, как
my_command Test
(Очевидно, это просто практический пример.)
Мне просто интересно, можете ли вы сделать то же самое в пакете.
Вы можете сделать это, сначала перенаправляя вывод в файл. Например:
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
Вы можете получить аналогичную функциональность, используя скрипты cmd.exe с помощью команды for /f
:
for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a
Да, это как бы неочевидно (по меньшей мере), но это то, что там.
См. for /?
для деталей gory.
Sidenote: я думал, что использовать "echo
" внутри обратных шагов в команде "for /f
" нужно будет, используя "cmd.exe /c echo Test
", поскольку echo
является внутренней командой cmd.exe
, но он работает более естественным образом. Пакетные скрипты Windows всегда удивляют меня каким-то образом (но обычно не так хорошо).
Прочитайте документацию для команды "для": for /?
К сожалению, я не зашел в Windows, чтобы проверить его сам, но я думаю, что что-то вроде этого может приблизиться к тому, что вы хотите:
for /F %i in ('echo Test') do my_command %i
Возможно, я надуваю синтаксис стандартного метода for /f
, но когда я ввел очень сложную команду с участием && и | в пределах backticks в пределе 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%
, она вызывает синтаксические ошибки.
Вы всегда можете запустить Bash внутри Windows. Я делаю это все время с MSYS (гораздо эффективнее Cygwin).