自动获取本地连接及网络地址修改

bat文件处理

bat文件处理实例
自动获取本地连接及网络地址修改


前言

对公司局域网或者固定网络地址的产品开发经常遇到修改地址的问题,每次使用均通过手动方式非常麻烦,并且还得记住固定的IPv4地址。对开发人员还好修改是常有的事,但一旦产品量产交于其它部门进行使用测试便会出现网络地址不对应的问题,往往其它部门反馈的问题却总是上位机或者下位机有问题,让人头秃。
本文可实现在windows下的bat文件对I本地网络P地址进行保存至当前bat文件中以及设置I本地网络P地址 自动获取I本地网络P地址等功能。


一、Windows命令行CMD基本语法

语法帮助

对于所有的CMD命令均可以同时使用 命令 /?进行获取帮助。也可以直接用 help 命令.
首先进入Windows的命令行就要进行如下操作:
按住 win +r键 输入 cmd 然后回车
[图片上传失败…(image-e99b16-1655605490569)]
然后输入 ping /? 进行查询ping命令的使用帮助。
[图片上传失败…(image-a5e7de-1655605490569)]

变量赋值

直接用set操作 无需定义变量类型

set j=0

标题循环、条件判断

条件判断的语句语法如下:

IF  [判断条件]  (
       [命令1]
    ) ELSE (
       [命令2]
    )

判断条件可以为常规的变量 k==1等,也可以为字符串 string1==string2
比较条件也可以用下边的语法进行表示

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

比较常用的还用来进行文件是否存在的一种判断,如下 如果文件1.txt存在就进行删除

IF EXIST 1.txt del 1.txt 

FOR循环语句常用来轮训一个文件中的每一行,或者每一行字符串中以某些符号进行分割然后进行轮训查找。
基本语法如下
轮训输出1.txt中的每一行字符串,tokens表示%%t变量赋值为通配符*所匹配到的值。

for /f "tokens=*" %%t in (1.txt) do (
echo %%t
)

变量的调用

赋值时可以直接将变量值j赋值给变量b,需要调用时需要添加%j%。

set j=0
set b=j
set con%j%=1

当添加变量延迟操作时需要使用!j!进行变量调用

setlocal enabledelayedexpansion
set j=0
set b=j
set con!j!=1

其它的使用语法可参考别人的博客CMD基本语法

二、bat文件处理代码解读

1.初始操作

代码如下:

@set "interipp=192.168.31.142"
@set "intermaskk=255.255.255.0"
@set "intergatee=192.168.31.1"
@set "interdns11=192.168.31.1 "
@set "interdns22=172.16.3.200"
@echo off
@cls

刚开始这里保存的是我们用来记录本机I本地网络P的地址,放在这里是为了不使用!以及转义字符^,因为这里字符在生成bat文件时会被系统默认给转义成变量值从而是的重新生成bat文件不能使用。(这种调试了很久,网上没有好的办法去处理。)

2.获取本地连接名称

::------------------------------------先跳转到这里---------------------------------------------------------------
::获取网络连接名称
:GETNAME
@if exist 10.bat del 10.bat
@cls
@(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)>".\network.txt"
@set j=0
@echo 获取到以下本地连接:
@for /f "tokens=*" %%i in (.\network.txt) do (
    set /a j+=1
    call set 网络连接%%j%%=%%i
    call set ethernetAdapter=%%i
    call echo %%ethernetAdapter%%
)
@del /s /q /f .\network.txt

上边的代码实现对本地存在的网络连接进行查询,并且保存在一个network.txt中方便进行输出打印,输出打印完毕删除文件即可(最后一行)。

3.打印本地网络连接

::选择需要设置的本地连接
@cls
@echo ----------------------------------------------------------------
@echo ----------------------------------------------------------------
@echo 请选择需要设置的网络连接:
@for /l  %%i in (1,1,!j!) do (
echo 请按 %%i设置   "!网络连接%%i!"
)
echo.

3.选择要操作的本地连接

::根据选择赋值
set /p KEYSET= 已选择:
@cls
@for /l  %%i in (1,1,!j!) do (
if %KEYSET% == %%i  set name=!网络连接%%i!
if %KEYSET% == %%i  echo 已选择  "!网络连接%%i!"
)
goto SET

添加这一部分是因为有电脑安装虚拟机或者无线连接会产生多个本地连接,只有你选择正确的本地连接才能设置正确的I本地网络P连接网络。

4.设置局域网固定网络地址

:SET
@echo ----------------------------------------------------------------
@echo ----------------------------------------------------------------
echo 设置[局域网I P]请按 1
echo 设置[自动I.P]请按 2
echo 设置[固定]请按 3
echo 设置双I.P 本机+[固定]请按 4
echo 记录当前本机I P为[局域网I.P]请按 d
echo.
@set /p KEY= 已选择:
if %KEY% == 1 goto ONE
if %KEY% == 2 goto TWO
if %KEY% == 3 goto THREE
if %KEY% == 4 goto FOUR
if %KEY% == 5 goto FIVE
if %KEY% == d goto D

上边是用来选择跳转用的,选择d则会跳转到保存当前I.P的选项。

5.动态分配网络地址

代码如下(示例):

:TWO
echo 正在进行动态IP设置,请稍等...   
echo. IP 地址正在从DHCP自动获取...   
netsh interface ip set address "%name%" dhcp   
echo. DNS地址正在从DHCP自动获取...   
netsh interface ip set dns "%name%" dhcp   
echo ----   
echo 全部设置完成!   
pause  
goto end

这部分很普通网上多的是不在介绍了

6.添加双本地网络地址

代码如下(示例):

:THREE
echo 设置7 正在自动添加 I.P ......
netsh interface ip add address name="%name%"   addr=172.29.4.100 mask=255.255.0.0   
echo I.P地址 /子网掩码 /网关设置完成
pause
goto end

7.在当前bat文件中保存本地I.P.v.4地址

这部分会先去获取本地连接I.P地址,然后跳转

for /f "tokens=3* delims=: " %%a in ('netsh interface ip show config "%adapter%"^|find /i "IP 地址"') do (
set defaultip=%%a
goto NEXT1
)
:NEXT1
@for /f "tokens=4* delims=) " %%a in ('netsh interface ip show config "%adapter%"^|find /i "掩码"') do (
set defaultmask=%%a
goto NEXT2
)

下边这一部分会将当前bat文件进行读取输出,输出同时进行匹配DNS2所在行的字符串,如果存在则清空所有输出,将I.P.字段进行单独输出(为了规避叹号以及其它转义字符在生成bat文件时被替换的问题,这也是为什么将本地IP地址放在bat文件的前几行的原因),然后后边的输出与当前bat文件内容一直。

@(for /f "tokens=* delims=" %%t in ('findstr  .* %infile%') do (
@for /f "tokens=1,2* delims= " %%i in ("%%t") do (
@rem 匹配dns1
@if "%%~j"=="interdns22=%interdns22%" (
@if exist %outfile% del %outfile%
@echo @set "interipp=%defaultip%">>%outfile%
@echo @set "intermaskk=%defaultmask%">>%outfile%
@echo @set "intergatee=%defaultgate%">>%outfile%
@echo @set "interdns11=%defaultdns1%">>%outfile%
@set /a cnt=1
)
)

最后还要一个跳转,生成一个新的bat文件执行删除当前bat文件并将新生成的bat文件重命名为原bat文件名。

echo 保存完成
goto JUMP
::生成一个新的bat文件进行旧文件的删除以及新文件的命名
:JUMP
@echo. >10.bat
@echo if exist %infile% del %infile%>>10.bat
@echo ren 3.bat %infile%>>10.bat
@echo %infile%>>10.bat
@echo if exist 10.bat del 10.bat>>10.bat
@echo exit>>10.bat
10.bat
exit

源码文件

源码文件已经上传,可下载设置。
资源文件:本地连接地址自动修改及保存


总结

bat文件处理很方便,一些基本的添加删除文件操作以及电脑的设置均可以通过此进行设置,比如自动关机、添加定时任务等。

猜你喜欢

转载自blog.csdn.net/weixin_43058521/article/details/125355499