Я пытался использовать команду set/p для установки статического IP-адреса с помощью команды ниже. Но как мне включить команду add, которая позволяет мне добавлять несколько диапазонов IP-адресов на вкладке Advance?
Это значит, что мой статический 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 — это 3-й октет 192.168.%A.255
, но я также хочу изменить 1-й и 2-й октеты на переменную. Как это сделать, если я использую команду %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