Пакетный эквивалент Баш обратные кавычки


при работе с Bash я могу поместить вывод одной команды в другую команду следующим образом:

my_command `echo Test`

было бы то же самое, что

my_command Test

(очевидно, это просто непрактичный пример.)

мне просто интересно, если вы можете сделать то же самое в партии.

5 78

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

вы всегда можете запустить Баш внутри окна. Я делаю это все время с MSYS (гораздо эффективнее, чем программа).

может быть, я испортил синтаксис стандарта 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%, это вызывает синтаксические ошибки.