Пакетный файл, который подключается к серверу на основе vlan
-
21-12-2019 - |
Вопрос
Это фрагмент моего сценария автоматизации для создания образа с определенного сервера на основе vlan.Скрипт проверяет свой IP и то, в какой vlan он находится, а затем, используя это, подключается к определенному серверу.Моя проблема в том, что я получаю ошибку "if is unexpected at this time".Пожалуйста, помогите.
:getvlan
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IPv4 Address"') do set IP=%%a
for /f "tokens=3 delims=." %%j in ('echo %IP%') do set vlan=%%j
if %vlan% GEQ 100 (if %vlan% LEQ 119 (
set servernowack=server1
set seshtype=M
) if %vlan% GEQ 130 (if %vlan% LEQ 139 (
set servernowack=server2
set seshtype=D
) if %vlan% GEQ 140 (if %vlan% LEQ 149 (
set servernowack=server3
set seshtype=D
) if %vlan% GEQ 150 (if %vlan% LEQ 159 (
set servernowack=server4
set seshtype=M
) if %vlan% GEQ 160 (if %vlan% LEQ 169 (
set servernowack=server5
set seshtype=D
) else (
goto fail
)
goto getserverip
Решение
Открывающих скобок гораздо больше, чем закрывающих.Следовательно cmd.exe
не удается определить блок для каждого if
в вашем пакетном коде простая синтаксическая ошибка, которую легко устранить.
@echo off
:getvlan
for /f "tokens=2 delims=:" %%a in ('%windir%\system32\ipconfig.exe ^| %windir%\system32\find.exe "IPv4 Address"') do set IP=%%a
for /f "tokens=3 delims=." %%j in ('echo %IP%') do set vlan=%%j
if %vlan% GEQ 100 (
if %vlan% LEQ 119 (
set servernowack=server1
set seshtype=M
goto getserverip
)
)
if %vlan% GEQ 130 (
if %vlan% LEQ 139 (
set servernowack=server2
set seshtype=D
goto getserverip
)
)
if %vlan% GEQ 140 (
if %vlan% LEQ 149 (
set servernowack=server3
set seshtype=D
goto getserverip
)
)
if %vlan% GEQ 150 (
if %vlan% LEQ 159 (
set servernowack=server4
set seshtype=M
goto getserverip
)
)
if %vlan% GEQ 160 (
if %vlan% LEQ 169 (
set servernowack=server5
set seshtype=D
goto getserverip
)
)
echo Error: Failed to determine vlan!
goto :EOF
:getserverip
Не связан с StackOverflow