Мне нужно сохранить вывод командной строки в переменной. Как я могу это сделать?
Предоставляется простой командный файл test.cmd
с содержанием:
echo jscott
Вы можете установить вывод в переменную с помощью следующей командной строки:
FOR /F "tokens=*" %a in ('test.cmd') do SET OUTPUT=%a
Используется в командной строке следующим образом:
C:\>SET OUTPUT
Environment variable OUTPUT not defined
C:\>FOR /F "tokens=*" %a in ('test.cmd') do SET OUTPUT=%a
C:\>ECHO %OUTPUT%
jscott
Если вы хотите использовать FOR
в пакетном файле, а не в командной строке, вам нужно изменить %a
к %%a
.
Вот как я это делаю:
vol c: > result.txt
set /p DATA=<result.txt
echo %DATA%
del result.txt
Если в файле result.txt больше одной строки, для% DATA% используется только верхняя строка файла. Вы также можете превратить result.txt в саму переменную, например% OUTPUT%.
Вы можете передать команду примерно так:
command > somefile
То, что вы видите выше, отправляет вывод в именованный файл. Если файл не существует, он его создает. Заменяет существующий файл. Вы также можете сделать это:
command >> somefile
Это добавляет вывод к содержимому именованного файла или создает файл, если его нет.
Смотрите также здесь: Использование операторов перенаправления команд