BAT批处理判断IP地址并自动禁用启用网卡,bat批处理


某内网拨号软件设计问题,拨号后在偶然的情况下不能自动获取DHCP从而更新内网IP,后来发现通过手动释放和重新获取IP可以解决这个问题,但是每次在操作前还要看下IP地址是不是已经被更新为内网地址,若已经更新则无需操作,否则就要手动释放更新,每次敲一堆命令确实麻烦,于是打算做成批处理。

首先遇到的问题是如何获取IP地址,当然既然采用批处理那么就需要借助于现有的命令或者命令行程序,Windows系统内ipconfig命令可以获取IP地址等信息,如果我们只需要IP地址,那么就必须对获取的信息进行筛选过滤,这就需要findstr等工具的配合了,结合网上找到的示例最终代码如下:

复制代码 代码如下:

for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "Address"') do set ip=%%i
SET ip=%ip:~1%

这样IP地址就保存在ip这个变量中了,我们可以通过ECHO %ip%获取。然后要判断这个IP地址是不是内网子段,这里我们简单起见,已知内网都是10.打头的IP地址,而其他IP段是除去10.打头的任意IP段,那么问题就简单了,直接截取该IP地址的前3位然后判断是不是10.就搞定了,这里我就贴上完整的代码供大家参考吧,写得比较简单:

复制代码 代码如下:

@ECHO OFF
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "Address"') do set ip=%%i
SET ip=%ip:~1%
set id=%ip:~0,3%
ECHO Current IP Address : %ip%
if NOT "%id%"=="10." goto FIXIPADDR
ECHO It seems OK:-)
goto END

:FIXIPADDR
ECHO Fix DHCP Configuration
ECHO Please wait...
ipconfig /release>NUL 1>NUL 2>NUL
ipconfig /renew>NUL 1>NUL 2>NUL

ECHO All Done
:END
PAUSE


问各位bat怎判断 无线网卡禁用还是启用? 目的是做一个简洁的批处理,快速实现网卡的禁用启用切换

@echo off
for /f "tokens=1,2 delims=\" %%i in ('devcon find pci\*^|find /i "wireless"') do set network=%%i\%%j
ipconfig/all|find /i "wireless" ||goto enable
:disable
devcon disable %network%
goto end
:enable
devcon enable %network%
:end
for /l %%i in (3,-1,0) do (
cls
echo.
echo %%i 秒后将会退出...
ping 127.1 -n 2 >nul)
 

怎使用bat批处理自动设网卡的ip

@echo off
color a
title 设置本机IP
rem 设置变量
echo 请按提示操作
:head
echo 设置为手动分配输入1,自动分配(DHCP)输入2
set /p xuanze=
if %xuanze% LSS 1 goto head
if %xuanze% GTR 2 goto head
echo 当前可用接口如下:
netsh interface show interface
echo 输入接口名称 如:本地连接 为空则设置为默认
echo 默认为〖【本地连接】〗
rem :interf
set /p Nic=
if "%Nic%"=="" set Nic=本地连接
rem echo 接口不能为空,重新输入
rem goto interf
rem )
if %xuanze% EQU 2 goto setdhcp
:input
echo 输入IP地址 若为空位自动获取IP
set /p Addr=
if "%Addr%"=="" goto setdhcp
echo 输入掩码(若输入为空则设置为默认255.255.255.0)
set /p Mask=
if "%Mask%"=="" (
set Mask=255.255.255.0
echo 255.255.255.0
)
:inputGway
echo 输入默认网关
set /p Gway=
if "%Gway%"=="" (
set /p GwayNull=网关为空? y/n:)
if "%GwayNull%"=="n" goto inputGway
if "%GwayNull%"=="N" goto inputGway
echo 输入接口跃点数:1或者20(1为默认连接)
echo 若输入为空 则默认为20跳
set /p yuedian=
if "%yuedian%"=="" set yuedian=20
echo 输入DNS 若为空默认为210.41.224.34
set /p Dns1=
if "%Dns1%"=="" set Dns1=210.41.224.34
rem //以上依次为IP地址、子网掩码、网关、首选DNS
echo -------------------------------------------------
echo 正在对〖【%Nic%】〗进行IP设置,请稍等
echo. IP地址 = %Addr%
echo. 子网掩码 = %Mask%
echo. 网关 = %Gway%
echo. 首选DNS = %Dns1%
title 正在设置...
netsh interface ip set address %Nic% static %Addr% 255.255.255.0 %Gway% %yuedian%
netsh interface ip set dns %Nic% static %Dns1% primary
goto out
rem 设置为自动获取
:setdhcp
title 正在设置...
echo -----------......余下全文>>
 

评论关闭