Пакетный эквивалент обратных галочек Bash

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

my_command `echo Test`

было бы то же самое как

my_command Test

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

Я просто задаюсь вопросом, можно ли сделать то же самое в Пакете.

89
задан Pascal Cuoq 4 May 2010 в 20:18
поделиться

4 ответа

Вы можете сделать это, сначала перенаправив вывод в файл. Например:

echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
55
ответ дан 24 November 2019 в 07:16
поделиться

Вы можете получить аналогичную функциональность, используя скрипты cmd.exe с командой for / f :

for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a

Да, это вроде как неочевидно (мягко говоря), но это то, что есть.

См. для /? для получения более подробной информации.

Примечание: я думал, что для использования « echo » внутри обратных кавычек в команде « for / f » необходимо использовать « cmd.exe / c echo Test ", поскольку echo - это внутренняя команда для cmd.exe , но она работает более естественным образом. Пакетные сценарии Windows всегда меня чем-то удивляют (но обычно не в хорошем смысле).

98
ответ дан 24 November 2019 в 07:16
поделиться

Прочитайте документацию по команде "for": for /?

К сожалению, я не вошел в Windows, чтобы проверить это самому, но я думаю, что что-то вроде этого может приблизительно показать то, что вы хотите:

for /F %i in ('echo Test') do my_command %i
28
ответ дан 24 November 2019 в 07:16
поделиться

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

3
ответ дан 24 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: