ملف دفعي يتصل بالخادم بناءً على شبكة محلية ظاهرية
-
21-12-2019 - |
سؤال
هذا مقتطف من البرنامج النصي للتشغيل الآلي الخاص بي للتصوير من خادم معين يعتمد على شبكة محلية ظاهرية.يتحقق البرنامج النصي من عنوان IP الخاص به وما هي الشبكة المحلية الظاهرية الموجودة فيه ثم يستخدمه للاتصال بخادم معين.مشكلتي هي أنني أتلقى خطأ "إذا كان غير متوقع في هذا الوقت".الرجاء المساعدة.
: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