Пакетная проверка Windows 8.1, если компьютер входит в рабочую группу, и изменение при необходимости
У меня есть SYSTEMINFO | НАЙТИ /I "ДОМЕН:", который показывает, является ли он частью домена или рабочей группы. Но я пытаюсь выяснить, как получить результат этого и если что-то, кроме Company.LLC, перейти к:JoinWorkgroup. Я думаю, что это должно выглядеть примерно так:
IF SYSTEMINFO | FIND /I "DOMAIN:" NOT = "Company.LLC" THEN GOTO :JoinWorkgroup
IF SYSTEMINFO | FIND /I "DOMAIN:" = "Company.LLC" THEN GOTO :NextVerification
Я могу заставить IF NOT EXIST работать с каталогами, но не могу понять, как связать его с результатами быстрых утилит.
1 ответ
Для первого взгляда запустите следующую команду из командной строки:
for /F "tokens=1*" %G in ('SYSTEMINFO ^| FIND /I "DOMAIN:"') do @echo %G %H
Для использования в пакетном скрипте удвойте знак процента %
: менять %G
в %%G
а также %H
в %%H
, Тогда применимый фрагмент кода в вашем пакетном скрипте может выглядеть следующим образом (оставьте интервал между строками, пожалуйста):
set "sDomain=WORKGROUP"
for /F "tokens=1*" %%G in ('SYSTEMINFO ^| FIND /I "DOMAIN:"') do set "sDomain=%%~H"
IF "%sDomain%"=="Company.LLC" (
GOTO :NextVerification
) ELSE (
GOTO :JoinWorkgroup
)
или, если вы предпочитаете решение без какой-либо вспомогательной переменной:
for /F "tokens=1*" %%G in ('SYSTEMINFO ^| FIND /I "DOMAIN:"') do (
IF "%%~H"=="Company.LLC" (
GOTO :NextVerification
) ELSE (
GOTO :JoinWorkgroup
)
)
Изменить (хотя принято): использовать %%~H
с ~
модификатор аргумента для удаления окружающих кавычек ("
) если есть.
Ресурс:
FOR /F
Loop команда: против результатов другой команды- структурированная
IF ... ( command ) ELSE ( command )
Условно выполнить команду