Board logo

标题: [网络连接] 电脑多张网卡的的情况,批处理怎么进行循环修改多张网卡? [打印本页]

作者: licunwei    时间: 2024-1-7 15:28     标题: 电脑多张网卡的的情况,批处理怎么进行循环修改多张网卡?

本帖最后由 licunwei 于 2024-1-14 20:39 编辑

本人小白,以下代码都是自己网上找的进行修改,单一网卡可以循环进行修改,但我的环境有4张网卡,我需要循环进行修改所有网卡,直到都能ping通远端ip,输入站代码的变量是有很多条的,这里我只写了一条,能理解就行。
echo off
setlocal enabledelayedexpansion
set /p zdm="请输入站代码:"
if /I %zdm%==111 set name=CZY-LKX-GZZ
for /f "tokens=2 delims=="  %%A in ('wmic nic where "NetEnabled='TRUE'" get NetConnectionID /value^|find "="') do (
set /a m+=1
set "winx!m!=%%A"
)

for /f "delims=:" %%i in ('findstr /n /b /e  ::::.*:::: "%~f0"') do (
    for /f "tokens=1,2,3,4,5,6,7" %%i in ('more /e +%%i "%~f0" ^| find /i "%name%"') do (
        set "name=%%i" & set "ip=%%j" & set "gateway=%%k" & set "mask=%%l"  & set "newnetwork name=%%m"  & set "yuanduan=%%n"
    )
)
set minvalue=1000
set maxvalue=4000

:A
if %minvalue% gtr %maxvalue% (
netsh interface ip set address %winx1% dhcp
exit
)

netsh interface ip set address %winx1% static %ip%  %mask% %gateway%
ping %yuanduan% -n 5 |findstr "TTL" >nul
if %errorlevel%==1 (
set /a "minvalue+=1000"
for /f "delims=:" %%i in ('findstr /n /b /e  ::::.*:::: "%~f0"') do (
    for /f "tokens=1,2,3,4,5,6,7" %%i in ('more /e +%%i "%~f0" ^| find /i "%minvalue%"') do (
        set "name=%%i" & set "ip=%%j" & set "gateway=%%k" & set "mask=%%l"  & set "newnetwork name=%%m" & set "yuanduan=%%n"  
    )
)
goto A
) else (netsh interface set interface name="%winx1%" newname="%newnetwork name%" >nul  && echo 网卡名称”%winx1%“修改为”%newnetwork name%“成功。 )

pause




::::ip信息表::::
名称                      ip                    网关                           掩码                         网卡名称        远端IP
CZY-LKX-GZZ        10.10.10.2          10.10.10.65               255.255.255.192                        A          10.10.10.20   
1000                        192.168.1.10        0.0.0.0                     255.255.255.0                        B          192.168.1.2
2000                        192.168.11.10        0.0.0.0                       255.255.255.0                        C          192.168.11.2
3000                        192.168.2.10        0.0.0.0                       255.255.255.0                        D          192.168.2.2
作者: _avatar_    时间: 2024-1-8 19:12

你本身的逻辑就有问题吧, 能不能PING通远端电脑的IP,跟有几个网卡之间没有必然关联。
只要你有一个网卡连网成功,就可以ping通吧。

你的需求说得也不是很明确,我是没看太明白你要做什么。
作者: licunwei    时间: 2024-1-10 19:22

回复 2# _avatar_


   我的环境是一个网口连接一个设备,网口与远端设备直连。我们这样的环境有100多台电脑,难免系统有时候会出问题,但每次重装了系统后需要一个网口一个网口去试,网线换来换去很麻烦。我就想用批处理来实现循环修改,ping通一个网口所连接的设备后就修改名称,这样循环修改完成。
作者: _avatar_    时间: 2024-1-11 17:15

回复 3# licunwei


    还是没看懂你的需求,你不是直接在电脑是操作吧?是要操作交换机什么的?
     
    不然一台电脑上应该不会同时接100张网卡吧。

    你是要将上面代码中,手动输入的 站代码, 换成脚本自动填写?
作者: licunwei    时间: 2024-1-12 18:26

回复 4# _avatar_


    每台电脑都有4个网口,3个网口各连一台设备,1个网口连接局域网,连接局域网的配网关,其余3个网口都不配网关。连接局域网的有100多ip,其余3个ip都是固定的 ,通过手动输入变量来提取连接局域网电脑的信息。如IP、网关、掩码、计算机名称、网口名称,但不确定4个网口分别是连接的什么设备,所以得循环修改,循环ping,直到ping通,然后修改网口名称。  实际也好理解,就是电脑4个网口都是连接了对应设备,设备都是配好了ip的,但电脑的4个网口没有配指定ip,需要用脚本来把4个IP配好。
作者: czjt1234    时间: 2024-1-13 09:50

回复 5# licunwei


这样会不会造成ip冲突?
比如2台电脑都运行这个批处理,结果2台电脑的ip都设置成一模一样的了
作者: licunwei    时间: 2024-1-13 10:49

回复 6# czjt1234


    不会的冲突的,连接局域网的100多个ip通过变量来指定IP,相当于手动给的ip地址,肯定得提前规划好。其余3个网口的设备是直连电脑网口,没有与这100多台电脑形成局域网,更不存在冲突了。
作者: czjt1234    时间: 2024-1-13 13:18

是不是现在所有电脑都能正常运行?
那你可以 ipconfig/all 读取所有 mac 和对应的 ip 子网 网关 等等
保存到文本文件或批处理文件最下面几行
以后重装系统就好设置了

也就是说,你现在是根据计算机名来设置各网卡的ip的
我认为可以改成根据mac来设置各网卡的ip
作者: licunwei    时间: 2024-1-13 13:49

回复 8# czjt1234


    我现在就是备份,通过MAC来还原的,但如果硬盘损坏,没有备份文件,或者新装的情况下,还得手动配置。
作者: czjt1234    时间: 2024-1-13 13:52

你不能把所有mac和对应的ip存到一个文件里么
作者: licunwei    时间: 2024-1-13 13:59

回复 10# czjt1234


    我是每日备份一次到本地磁盘,但现场人员有时候会替换网口,比如网络异常,他们自己会相互去替换,替换后不会还原,这样备份后的文件也就没多大意思。还有新装的问题。
作者: newswan    时间: 2024-1-13 21:04

回复 11# licunwei


    ip信息表 就是 配置文件吗?
作者: licunwei    时间: 2024-1-13 21:25

回复 12# newswan


    ip信息表就是网卡配置信息,不配网关的地址是固定的,配网关的地址有100多个,通过手动输入电脑编号提取IP,掩码,网关等信息。
作者: newswan    时间: 2024-1-13 21:43

35行那里,( 没有匹配
作者: licunwei    时间: 2024-1-13 21:58

回复 14# newswan


    ) else (netsh interface set interface name="%winx1%" newname="%newnetwork name%" >nul  && echo 网卡名称”%winx1%“修改为”%newnetwork name%“成功。)
35行应该这样,后面忘记删了。
作者: newswan    时间: 2024-1-13 21:59

流程应该是这样的
读入文件
ping 每一个远端 如果不通 记录网络  网卡 禁用
循环选不通的网卡,循环设置 ip,直到ping通
作者: licunwei    时间: 2024-1-13 22:03

回复 16# newswan
大佬能否帮我看看需要怎么写脚本,才能完成循环修改。我小白,不懂。
作者: newswan    时间: 2024-1-13 23:25

回复 17# licunwei


    具体写出来,对我来说也比较难,批处理不想用了,如果能用powershell,晚点试试 powershell
作者: newswan    时间: 2024-1-14 16:21

最终办法应该是,用一个路由器或者 dhcp 服务器,给内网自动分配ip
作者: licunwei    时间: 2024-1-14 17:16

回复 19# newswan
应该用脚本能够实现,目前已经能够单张网卡循环修改。
作者: licunwei    时间: 2024-1-14 17:17

回复 19# newswan
我自己再研究研究,有大神指点更好。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2