IP 주소를 설정하는 명령을 설정한 후 배치 파일에 IP 범위를 어떻게 추가합니까?

IP 주소를 설정하는 명령을 설정한 후 배치 파일에 IP 범위를 어떻게 추가합니까?

아래 명령을 사용하여 고정 IP 주소를 설정하기 위해 set/p 명령을 사용해 보았습니다. 하지만 고급 탭에 여러 IP 범위를 추가할 수 있는 추가 명령을 어떻게 포함합니까?

내 고정 IP는 이지만 192.168.4.250 내 IP 범위는 다음과 같습니다.192.168.4.250 - 192.168.60.250

@echo off
echo ipv4 set address "Ethernet 3"
echo ipv4 netsh interface name="Ethernet 3"
set/p address=First Address:
set/p mask=First Mask:
set/p gate=First Gate:
netsh interface ipv4 set address name="Ethernet 3" static %address% %mask% %gate%

그 결과

여기에 이미지 설명을 입력하세요

또한 IP 변수는 세 번째 옥텟인데 192.168.%A.255첫 번째와 두 번째 옥텟도 변수로 변경하고 싶은데, 사용하는 명령이 다음과 같은 경우 어떻게 해야 합니까 %A IN (120,1,130)?

답변1

제가 귀하의 질문을 이해했는지 100% 확신할 수는 없지만
제 영어 실력이 약하거나 형편없다는 것은 100% 확신합니다. 죄송합니다...

어쨌든, 내가 당신에게 도움이 될 만한 일이 멀지 않기를 바랍니다...

@echo off && setlocal EnableDelayedExpansion

echo;iPv4 Set address "Ethernet 3" & echo;iPv4 netsh interface name="Ethernet 3"

:loop
cls & echo 

:: remove variable/value in using loop for command set "_var="
for %%i in ("address=", "mask=","gate=","dns1=","dns2=")do set "%%~i"

:: set variable/value in using loop for command to set /p "_var=Test to Screen" 
for %%i in ("address=First Address: ", "mask=First Mask: ","gate=First Gate: ","dns1=First DNS: ","dns2=Second DNS: "
     )do <con: set /p "_%%~i" || goto :loop

:: set variable/value in using loop for command set dns/ip 1st and 2nd
for %%i in (1.1.1.1,"1.0.0.1 index=2")do %__AppDir__%netsh.exe interface ipv4 add dns %%~i

:: set variable/value in using loop for command set "Ethernet 3" static ip/mask/gate
%__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %_address% %_mask% %_gate%

rem For /L (1ST.IPV4.OCT.IP)do ...
for /L %%A in (198,1,200
    )do %__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %%~A.128.60.255 %_mask% %_gate%

rem For /L (1ST.2ND.IPV4.OCT)do... and Set %%A.2ND.IPV4.OCT
for /L %%A in (198,1,200)do for /l %%B in (128,1,130
     )do %__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %%~A.%%~B.60.255 %_mask% %_gate%
        
rem For /L (1ST.2ND.3RD.OCT)do ... and Set %%A.%%B.%%C.OCT
for /L %%A in (198,1,200)do for /l %%B in (128,1,130)do for /l %%C in (4,1,60
    )do %__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %%~A.%%~B.%%~C.255 %_mask% %_gate% 

rem For /L (1ST.2ND.3RD.4TH)do ... and Set %%A.%%B.%%C.%%D
for /L %%A in (198,1,200)do for /l %%B in (128,1,130)do for /l %%C in (4,1,60)do for /l %%D in (253,1,254
     )do %__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %%~A.%%~B.%%~C.%%~D %_mask% %_gate%

endlocal & goto :eof || exit /b 0 

  • 관찰:추가 명령은 새로 할당된 IP와의 연결을 테스트하고 성공하면 루프를 종료하는 데 유용할 것이라고 생각합니다.
@echo off && setlocal EnableDelayedExpansion

echo;iPv4 Set address "Ethernet 3" & echo;iPv4 Netsh Interface Name="Ethernet 3"

:loop
cls & echo; & for %%i in ("address=", "mask=","gate=","dns1=","dns2=")do set "%%~i"

for %%i in ("address=First Address: ", "mask=First Mask: ","gate=First Gate: ","dns1=First DNS: ","dns2=Second DNS: "
     )do <con: set /p "_%%~i" || goto :loop

for %%i in (1.1.1.1,"1.0.0.1 index=2")do %__AppDir__%netsh.exe interface ipv4 add dns %%~i
%__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %_address% %_mask% %_gate%

for /L %%A in (198,1,200
    )do ;"%__AppDir__%netsh.exe" interface ipv4 set address name="Ethernet 3" static %%~A.128.60.255 %_mask% %_gate% && (
         <con: %__AppDir__%ping.exe 1.1.1.1 -f -4 -w 4|2>nul %__AppDir__%findstr.exe .*Received.=.[1-4].>nul && goto %:^)
        ) 

for /L %%A in (198,1,200)do for /l %%B in (128,1,130
     )do %__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %%~A.%%~B.60.255 %_mask% %_gate% && (
         <con: %__AppDir__%ping.exe 1.1.1.1 -f -4 -w 4|2>nul %__AppDir__%findstr.exe "Received.=.[1-4]">nul && goto %:^)
        )
        
for /L %%A in (198,1,200)do for /l %%B in (128,1,130)do for /l %%C in (4,1,60
    )do %__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %%~A.%%~B.%%~C.255 %_mask% %_gate% && (
         <con: %__AppDir__%ping.exe 1.1.1.1 -f -4 -w 4|2>nul %__AppDir__%findstr.exe "Received.=.[1-4]" >nul && goto %:^)
        )
        
for /L %%A in (198,1,200)do for /l %%B in (128,1,130)do for /l %%C in (4,1,60)do for /l %%D in (253,1,254
     )do ;%__AppDir__%netsh.exe interface ipv4 set address name="Ethernet 3" static %%A.%%B.%%C.%%D %_mask% %_gate% && (
         <con: %__AppDir__%ping.exe 1.1.1.1 -f -4 -w 4|2>nul %__AppDir__%findstr.exe "Received.=.[1-4]">nul && goto %:^)
        )
%:^) 
:: Your next command came here...
endlocal & goto :eof || exit /b 0

관련 정보