Это также повторяет что-то еще, потому что это дает echo is off
Это потому что wmic
(плохо написано и) выводит пустую строку в конце вывода.
Ты можешь использовать findstr /r /v "^$"
чтобы удалить пустую строку.
Использование командного файла:
@echo off setlocal for /f "usebackq skip=1 tokens=*" %%i in (`wmic computersystem get workgroup ^| findstr /r /v "^$"`) do set myVar=%%i echo %myVar% endendlocal
Используя командную строку:
for /f "usebackq skip=1 tokens=*" %i in (`wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"`) do @set myVar=%i && echo %myVar%
Заметки:
for /f
петли черезwmic
выход.skip=1
пропускает строку заголовка (содержащуюVariableValue
)findstr /r /v "^$"
удаляет завершающую пустую строку изwmic
вывода.
Пример вывода:
> wmic computersystem get workgroup Workgroup WORKGROUP > for /f "usebackq skip=1 tokens=*" %i in (`wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"`) do @set myVar=%i && echo %myVar% WORKGROUP >
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- findstr - поиск строк в файлах.
- for / f - Циклическая команда против результатов другой команды.
- wmic - команда инструментария управления Windows.