作者:kuaike的诱惑 | 来源:互联网 | 2023-09-24 12:11
文章目录前言修改IP地址的批处理命令程序介绍程序特点程序菜单界面程序功能介绍设置为其中一个IP地址一次性添加多个IP地址手动设置IP地址自动获取IP地址显示网卡的IP信息使用说明代
文章目录
- 前言
- 修改IP地址的批处理命令
- 程序介绍
- 程序特点
- 程序功能介绍
- 设置为其中一个IP地址
- 一次性添加多个IP地址
- 手动设置IP地址
- 自动获取IP地址
- 显示网卡的IP信息
- 使用说明
- 代码说明
- WIN10 :CMD批处理的管理员权限问题
- 后话
前言
- 日常工作中,我们常接触到具有网络接口的设备,调试它们的时候要用电脑连接,而电脑IP地址与设备IP地址时常不在同一个网段,我们要把电脑的IP地址修改到与设备IP地址的相同网段中。
- 在连接和调试数个处于不同IP网段的设备的时候,除了修改电脑的IP地址和网关,我们还可以添加多个IP地址和对应的网关地址,如下图:
这样操作可使电脑网卡在不修改IP属性的情况下,能够与处于不同网段的设备进行通信,但每次添加或删除IP地址/网关地址的操作都要进入网卡属性的选项中设置,该过程中有很多重复的操作,也会因某次输入错误导致返回此处检查和修改,所以本人想要设计一个程序来提高这部分操作的效率,并减少输入出错的概率。
- 整体需求描述:略!
为达到轻量、易读、易修改的目的,在此采用DOS平台脚本,即批处理命令(Batch)。它无需经过编译,并且快速、敏捷、灵活,程序的每一行都是一条批处理命令,可用任何文本编辑工具来修改,程序文件双击即可运行。
对于一次性待添加的多个IP地址/网关地址,可以将它们直接编写和保存在程序代码中,最终只有单独一个文件被使用和修改。
修改IP地址的批处理命令
- 普通的批处理修改网卡IP地址,相当于网卡的第0个IP:set address… static…
netsh interface ip set address 网卡名称 static IP地址 子网掩码 网关地址
netsh interface ip set address 本地连接 static 192.168.1.250 255.255.255.0 192.168.1.254
- 已经拥有/设置过IP地址等的网卡,继续添加更多的IP地址等:add address…
netsh interface ip add address 网卡名称 IP地址 子网掩码 网关地址
netsh interface ip add address 本地连接 IP地址 子网掩码 网关地址
- 设置为DHCP,即自动获取IP地址:
netsh interface ip set address 网卡名称 source=dhcp
netsh interface ip set address 本地连接 source=dhcp
ipconfig
- 或
ipconfig /all
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "IPv4"') do set IPnow=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "子网掩码"') do set MASKnow=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "默认网关"') do set GATEnow=%%i
程序介绍
All By JoKKKKKKKKKK,2017.06.17
请在此下载程序文件,或自行复制粘贴完成程序:
GitHub:PC-IP-address-Config
CSDN下载
程序特点
- 台式机、笔记本、WIn7系统,有线/无线网卡通用
- 文件占用空间小,无需编译生成,双击能够立即运行;
- 用系统自带的记事本等编辑器进行编辑,方便修改IP等等相关配置;
- 有初始菜单界面,并显示电脑的IP地址/子网掩码/网关地址;
- 在菜单界面中,输入数字即可完成操作;
- 可以选择不同的IP地址来直接设置;
- 可以一次性添加多个IP地址/子网掩码/网关地址;
- 可以手动输入IP地址/子网掩码/网关地址进行设置;
- 可以自动获取IP地址;
- 可以查看电脑网卡的信息,相当于在命令行中输入”ipconfig”的功能;
- 几乎不需编程基础,使用本程序只需了解如何修改电脑网卡IP等地址。
- 该初始界面中显示当前电脑在局域网中的IP地址、子网掩码和默认网关,此时按下数字键1 ~ N可以选择需要运行的功能:
(1)选择设置为其中一个IP地址/掩码/网关;
(2)一次性添加多个(已经在程序中写好的)IP地址/掩码/网关;
(3)设置为用户手动输入的单独IP地址/掩码/网关;
(4)设置为自动获取IP地址;
(5)查看电脑的网卡信息。
*注:本例中,网卡的名称为 “本地连接 2”,请根据实际情况在后面的程序当中修改此名称!
程序功能介绍
在菜单中,分别按下键盘上的数字键1~4,会自动将网卡设置为所选择的IP地址。
此处按下了数字键1,把IP设置为 10.176.3.253,效果如图:
其余设置单个IP的按键请自行试验。
在菜单中,按下键盘上的数字键5(添加以上所有IP地址到网卡“本地连接2”):
IP1和网关1将作为优先级最高的IP地址和网关地址来使用;
而 IP2~IP4和它们的网关地址都会作为备用地址使用,在连接相同网段的设备时都能进行通信;
运行效果如图,此时网卡具有了4个IP地址和4个网关地址:
注:添加完毕后会自动运行命令行中的“ipconfig”以便观察网卡信息。
手动输入单个IP地址和网关地址,即只使用本次输入的唯一的IP地址和网关地址,按回车键来完成每一次输入。
-注:输入子网掩码时,按下回车,即输入了255.255.255.0,程序中的”MASK,也可根据需要修改
如图,当输入的IP地址有错误时(图中的 .666 值不正确),会出现系统提示,无法添加:
输入正确的IP和网关后,设置成功:
即将网卡的IP地址设置为自动获取(DHCP),用于平时连接路由器和上网冲浪等。
即批处理中的将网卡设置为DHCP命令。
显示网卡的IP信息
- 相当于在命令行CMD中的“ipconfig”指令,效果如图:
使用说明
打开电脑中自带的记事本程序并新建一个空文件,把本文最后的所有代码依顺序复制粘贴到记事本中,最后另存为(*.bat)后缀名的文件(如:修改IP地址.bat)即可双击运行程序。
如果要修改程序中的代码,可直接用记事本等文本编辑器打开此文件。
- 1.使用前,必须把 set NAME=“本地连接 2” 双引号内部改为需要被修改IP地址的网卡名称,
如“本地连接”或“无线网络连接”等,修改保存后再运行程序 - 2.在文本中可以修改为想要将网卡设置为的 IP地址 /掩码 /网关:IP1~IP4等等
- 3.本程序的菜单不能超过9个可选项,所以注意IP5的值
- 4.少数情况下,若出现菜单头部显示的 IP/掩码/网关 刷新慢,显示不出的情况,
请在对应操作 setIP1/…/addIP/inputIP 的最后增加延时的时长:
如:choice /t 5 /d y /n >nul
增加里面的数字大小(这里是5),直到菜单头部IP信息的显示跟得上刷新速度即可!
注意:每次修改程序代码后要使修改的内容生效,必须保存并退出编辑器后再运行程序!
代码说明
初始化设置:
NAME:要修改IP设置的网卡适配器名称,本例中是“本地连接 2”;
IPs:提前在本程序中填写的IP地址数量,本例中有4个IP地址;
(注:为保证程序正常运作,IPs的值不要超过5)
IP1 ~ IP4,MASK1 ~ MASK4和GATE1~ GATE4为提前在本程序中填写好的IP地址/子网掩码/网关地址,掩码默认为255.255.255.0,可根据需要修改;
若要添加更多的IP地址和网关地址,则在(set GATE4=…)的下方添加类似语句:
“set IP5=…”和“set GATE5=…”和 “set MASK5=%MASK%”,
还需要在“:select”段后添加类似“:setIP1”或“:setIP2”等等的段落,注意修改IPs的数量。
以上之外的参数、变量、语句等请勿随意修改,以免影响使用。
开始界面/菜单:
Call :displayIPinfo disp:调用显示当前IP信息的子函数;
goto select:跳转到选择功能分支;
选择功能:
if errorlevel X goto Y:根据输入的数字X跳转到名为Y的子函数;
跳转分支“setIP%%i”:设置为其中一个IP地址/网关地址;
跳转分支“addIP”:一次性添加已写好的IP地址/网关地址;
跳转分支“inputIP”:手动填写IP地址/网关地址;
跳转分支“autoIP”:让网卡自动获取IP地址;
跳转分支“ipcfg”:即在命令行”cmd”中输入”ipconfig”。
title 设置IP地址
@echo off
setlocal enabledelayedexpansion
color 71
rem WIN10系统CMD获取管理员权限
%1 start "" mshta Vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit
set NAME="本地连接 2"
set "MASK=255.255.255.0"
set IPs=4
set /a index1=%IPs%+1
set /a index2=%IPs%+2
set /a index3=%IPs%+3
set /a index4=%IPs%+4
set IP1=10.176.3.253
set MASK1=%MASK%
set GATE1=10.176.3.254
set IP2=192.168.2.222
set MASK2=%MASK%
set GATE2=192.168.2.1
set IP3=192.168.1.111
set MASK3=%MASK%
set GATE3=192.168.1.1
set IP4=172.31.220.1
set MASK4=%MASK%
set GATE4=172.31.220.254
SET _startchar=0
SET _length=%IPs%
SET _num=123456789
CALL SET _loop=%%_num:~%_startchar%,%_length%%%
set /a "_loop=%_loop%%index1%%index2%%index3%%index4%"
cls
Call :displayIPinfo disp
:start
echo.******************************* 菜单 *******************************
echo.*请输入相应数字来运行功能:(输入1-%index4%)*
echo.
for /L %%j in (1,1,%IPs%) do ( echo %%j:IP地址设置为:!IP%%j! 网关: !GATE%%j! 子网掩码: !MASK%%j! )
echo.
echo. %index1%: 添加以上所有IP地址到网卡:%NAME%
echo.
echo. %index2%:输入IP地址进行设置(使用单独的IP地址)
echo.
echo. %index3%: 自动获取IP地址
echo.
echo. %index4%: 显示网卡的IP信息
echo.******************************* 菜单 *******************************
goto select
:select
choice /c %_loop% /n /m "*请输入相应数字:"
if errorlevel %index4% goto cfgIP
if errorlevel %index3% goto autoIP
if errorlevel %index2% goto inputIP
if errorlevel %index1% goto addIP
for /L %%i in (%IPs%,-1,1) do (if errorlevel %%i goto setIP%%i )
:setIP1
cls
echo. 正在设置IP:%IP1%,网关:%GATE1%
netsh interface ip set address %NAME% static %IP1% %MASK1% %GATE1%
choice /t 4 /d y /n >nul
Call :displayIPinfo disp
goto start
:setIP2
cls
echo. 正在设置IP:%IP2%,网关:%GATE2%
netsh interface ip set address %NAME% static %IP2% %MASK2% %GATE2%
choice /t 4 /d y /n >nul
Call :displayIPinfo disp
goto start
:setIP3
cls
echo. 正在设置IP:%IP3%,网关:%GATE3%
netsh interface ip set address %NAME% static %IP3% %MASK3% %GATE3%
choice /t 4 /d y /n >nul
Call :displayIPinfo disp
goto start
:setIP4
cls
echo. 正在设置IP:%IP4%,网关:%GATE4%
netsh interface ip set address %NAME% static %IP4% %MASK4% %GATE4%
choice /t 4 /d y /n >nul
Call :displayIPinfo disp
goto start
:setIP5
cls
echo. 正在设置IP:%IP5%,网关:%GATE5%
netsh interface ip set address %NAME% static %IP5% %MASK5% %GATE5%
choice /t 4 /d y /n >nul
Call :displayIPinfo disp
goto start
:addIP
cls
echo 添加 IP1: %IP1%
echo 添加网关1: %GATE1%
netsh interface ip set address %NAME% static %IP1% %MASK1% %GATE1%
for /L %%i in (2,1,%IPs%) do (
echo 添加 IP%%i: !IP%%i!
echo 添加网关%%i: !GATE%%i!
netsh interface ip add address %NAME% !IP%%i! %MASK% !GATE%%i!
)
echo.正在添加IP地址,请稍等...
choice /t 3 /d y /n >nul
echo.添加完毕...
choice /t 1 /d y /n >nul
echo / ipconfig
ipconfig
echo / ipconfig
choice /t 5 /d y /n >nul
echo.
goto start
:inputIP
cls
Call :displayIPinfo disp
echo.
echo 手动设置IP地址(默认子网掩码: 255.255.255.0):
echo.
set /p IPin= IP地址:
set /p "MASK= 子网掩码:【按下回车为%MASK%】"
set /p GATEin= 网 关:
echo..........
netsh interface ip set address %NAME% static %IPin% %MASK% %GATEin%
echo.请稍等...
choice /t 4 /d y /n >nul
echo..........
cls
Call :displayIPinfo disp
echo.
goto start
:autoIP
cls
echo 设置的IP地址将被清除...
echo * IP设置为自动获取(DHCP) *
netsh interface ip set address %NAME% source=dhcp
choice /t 2 /d y /n >nul
Call :displayIPinfo disp
echo.-----------------------------------------------------------
goto start
:cfgIP
cls
echo.
echo / ipconfig
ipconfig
echo / ipconfig
echo.
choice /t 5 /d y /n >nul
goto start
:displayIPinfo
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "IPv4"') do set IPnow=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "子网掩码"') do set MASKnow=%%i
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "默认网关"') do set GATEnow=%%i
echo ------------------------------------------
echo 当前IP地址 :%IPnow%
echo 当前子网掩码:%MASKnow%
echo 当前默认网关:%GATEnow%
WIN10 :CMD批处理的管理员权限问题
WIN10系统运行CMD批处理会常见到无法获取管理员权限的问题。
知乎:怎样自动以管理员身份运行bat文件?
在程序头部的:
title 设置IP地址
@echo off
setlocal enabledelayedexpansion
color 71
的后面加上:(by Scruel)
%1 start "" mshta Vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit
OK了。
后话
希望有更多人能使用到本程序,或基于本程序的思想将其扩展延伸,发扬光大,这是好事,多人用的爽才是真的好用。
这不,有拿C#写界面来实时显示/改电脑IP的都出来了,某期杂志有这个构思的批处理修改IP文了,你们拿去写了哈。
某些电脑还是XP,so没用.Net写界面实现实时的功能,为了这要装.Net包有点啰嗦,目前这东西还是保持“原始”的好。
构思来源于某个批处理改Hosts文件,越墙用的,在此也感谢这位作者。