Пакетная проверка 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 с ~ модификатор аргумента для удаления окружающих кавычек (") если есть.

Ресурс:

Другие вопросы по тегам