Вы можете использовать for /f
для перебора выходных данных команды:
for /f "usebackq delims=" %%x in (`your command`) do ...
Вам вообще не нужен временный файл; здесь вы ничего не получите (за исключением того, что вам нужно подумать о том, где у вас могут быть права на запись, и не забудьте впоследствии удалить файл).
for
выполняет итерации по выходным данным, разбивая их на токены. Вот почему в конце есть delims=
, который эффективно отключает любые токенизации, чтобы вы не разбили свой вывод на пробелы. Существуют и другие параметры, такие как skip=n
, которые пропускают n строк перед началом обработки, которые можно использовать для игнорирования заголовка или около того.
Внутри этого цикла вы можете сделать следующее:
for /f "usebackq delims=" %%x in (`your command`) do set VAR=%%x
Будьте очень осторожны с тем, что вы потом делаете с этой переменной, поскольку она может содержать символы, которые оболочка рассматривает как специальные, такие как >
, <
, &
и т. Д. уязвимости Batch Injection при выполнении следующих действий:
echo %VAR%
и кто-то решает вставить в его имя следующую строку:
foo & rd /s q \
Если вы знаете, что возвращается только одна строка с пригодным для использования контентом, а остальное бесполезно, то вы можете преждевременно прервать цикл:
for /f "usebackq delims=" %%x in (`your command`) do set VAR=%%x&goto break
:break