Замена для $ () в пакетном скрипте Windows - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь преобразовать мой bash-скрипт в пакетный файл Windows. Это действительно простая строка, которая должна передавать содержимое файла в качестве аргументов script.exe и отправлять результаты output.txt.

Это рабочий скрипт bash:

./script.exe $(cat input.txt) > output.txt

Я знаю, что это может быть плохой стиль, но это работает. Проблема в том, что я понятия не имею, как сделать что-то вроде $() в командном файле Windows. Когда я использую его, он отправляет строку "$(cat input.txt)" в качестве аргумента вместо выполнения команды.

1 Ответ

0 голосов
/ 12 ноября 2018

Эта конструкция bash называется подстановкой команд. Вот отличный ответ от @ MichaelBurr.

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

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 всегда меня удивляют как-то (но не всегда в хорошем смысле).

См. Также в Superuser: Есть ли что-то вроде подстановки команд в WIndows CLI?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...