Пакетный файл с двумя условиями и циклом - PullRequest
0 голосов
/ 27 сентября 2019

Допустим, мой единственный метод написания сценариев - через командный файл.

У меня есть командный файл с длинным списком команд, однако мне нужно включить две непредвиденные ситуации:

  • Необходимо быть в домене (для этого примера мы будем использовать .com)
  • Должен иметь нестандартный IP-адрес (то есть 192 не используется в домене, но используется до присоединения и не используется).169 из-за задержки в назначении DHCP).

Я бы предпочел сохранить это в том же пакетном файле, что и остальная часть кода.Я пытался соединить некоторые команды, но обычно получаю синтаксическую ошибку.Я могу заставить часть IP работать, используя% ERRORLEVEL%, однако, я могу только выяснить поиск одной маски IP.

Вот ОЧЕНЬ неправильный и элементарный код:

    @ECHO off

    for /F "tokens=1*" %%G in ('SYSTEMINFO ^| FIND /I "DOMAIN:"') do (
        IF %%G == ".com" (
            GOTO :IPCheck
        ) ELSE ( GOTO :NoRun

    :IPCheck
    ipconfig | find /i "192." "169."
        if %ERRORLEVEL% == 0 goto IPCheck


     REM Domain address is configured and will continue script.)
    pause
    )

1 Ответ

0 голосов
/ 28 сентября 2019

find не может найти более одной строки поиска.Findstr есть.См. findstr /? для получения дополнительной информации.

Вам даже не нужен какой-либо цикл:

@echo off
ipconfig | find "IPv4" | findstr /c:" 192." /c:" 169." >nul && goto :NoRun    
systeminfo | findstr /RBE "Domain:.*\.com" >nul || goto :NoRun
echo all ok. Insert payload here...
goto :eof
:NoRun
echo this system doesn't meet the prerequisites.
...