2015-03-12 2 views
0

Я пытаюсь разобрать, добавить ip и адрес маски подсети. Работает отлично, но добавление создает проблему для меня. здесь Я вставляю свой код. В основном я получаю IP и маску подсети, а затем выполняю некоторую маскировку, а затем добавляю.разбор и добавление адреса маски ip и подсети

позволяет предположить, у меня есть следующие,

IPADDR : 10.239.230.47 
SUBNET : 255.255.254.0 

Я получаю такой вывод:

----------------------------------------------------------------- 
255.255.254.0 
"10.239.231              .255" 
Press any key to exit 
----------------------------------------------------------------------- 

Я не в состоянии решить, почему я получаю пространство btw.Please помочь мне.

@ECHO OFF 
    ECHO. 
    set dot=. 
    set "a1=0" 
    set "b1=0" 
    set "c1=0" 
    set "d1=0" 

    set "a2=0" 
    set "b2=0" 
    set "c2=0" 
    set "d2=0" 
    set "temp1=0" 
    set "temp2=0" 

    set "mask=0x01" 
    set "_result=0" 
    set "_IPADDR1=0" 

    FOR /F "TOKENS=2* DELIMS=:" %%A IN ('IPCONFIG ^| FIND "IPv4"') DO FOR %%B IN (%%A) DO SET IPADDR=%%B 
    FOR /f "tokens=1,2,3,4 delims=." %%a IN ("%IPADDR%") do set a1=%%a&set b1=%%b&set c1=%%c&set d1=%%d 


    FOR /F "TOKENS=2* DELIMS=:" %%A IN ('IPCONFIG ^| FIND "Subnet Mask"') DO FOR %%B IN (%%A) DO SET SUBNET=%%B 
    FOR /f "tokens=1,2,3,4 delims=." %%a IN ("%SUBNET%") do set a2=%%a&set b2=%%b&set c2=%%c&set d2=%%d 


    echo %SUBNET% 

    IF %c2% EQU 255 set temp1=1 
    IF %c2% EQU 0 set temp1=1 

    IF %temp1% EQU 1 (
    set c1=255 
    )ELSE (
    :loop1 
     set /a "_result=c2&mask" 
     IF %_result% GTR 1 (
     set c1=%c1% 
     )ELSE (
     set /a "c1=c1|mask" 
     ) 

     IF %mask% EQU 128 (
     goto:exit_loop1 
     )ELSE (
     set /a "mask=mask<<1" 
     goto:loop1 
     ) 

    ) 
    :exit_loop1 

    set "mask=0x01" 
    set "_result=0" 
    IF %d2% EQU 255 set temp2=1 
    IF %d2% EQU 0 set temp2=1 

    IF %temp2% EQU 1 (
    set d1=255 
    )ELSE (
    :loop2 
     set /a "_result=d2&mask" 
     IF %_result% GTR 1 (
     set d1=%d1% 
     )ELSE (
     set /a "d1=d1|mask" 
      ) 

     IF %mask% EQU 128 (
     goto:exit_loop2 
     )ELSE (
     set /a "mask=mask<<1" 
     goto:loop2 
     ) 
    ) 
    :exit_loop2 

    set _IPADDR1="%a1%%dot%%b1%%dot%%c1%%dot%%d1%" 
    echo.%_IPADDR1% 

    SET /p exit=Press any key to exit 
    :End 
+0

извините выход не Пастер properly.it приходит как этот .lot зазора перед тем .255 " 10.239.231 .255 " – bhaskar

ответ

0
set c1=%c1% 
     ^There is a space here being added 

Лучше использовать

set "c1=%c1%" 

, что позволит избежать этой проблемы

+0

thanks.it resolved – bhaskar

Смежные вопросы