无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7902|回复: 8
打印 上一主题 下一主题

自动重新启动网卡的cmd

[复制链接]
跳转到指定楼层
1#
发表于 2011-3-25 08:15:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
需要 devcon/ipconfig/find /for

利用 ipconfig + find 获取 网络设备名单
利用 for + devcon 将网络设备关闭再启动

在 xp /win7 中文下测试成功。

-----------------------------------------------------------------------
@echo off
title 重新启动网络设备
color 0a
echo.

ipconfig /all |find "描述"        >net_dev.txt
ipconfig /all |find "Description">>net_dev.txt

for /f "tokens=1,2 delims=:" %%x in (net_dev.txt) do (  
for /f "delims=& tokens=1,2" %%c in ('devcon find pci\*^|find  /i "%%y"') do (
  echo  正在 重新启动设备  "%%d"
  devcon disable *%%d* >nul
  devcon enable *%%d* >nul
)
)

if exist net_dev.txt del /q net_dev.txt
echo.
echo 完毕!

------------------------------------------------------------------------
9#
发表于 2024-3-15 22:23:53 | 只看该作者
如果能定时就更好了
回复

使用道具 举报

8#
发表于 2024-3-13 09:24:22 | 只看该作者
谢谢分享
回复

使用道具 举报

7#
发表于 2024-3-13 09:21:00 | 只看该作者
正好需要这个处理  谢谢
回复

使用道具 举报

6#
发表于 2011-3-25 16:15:21 | 只看该作者
楼主水平着实了得啊!!
回复

使用道具 举报

5#
 楼主| 发表于 2011-3-25 12:36:33 | 只看该作者
再来一个不用  find  的。针对 以太网适配器。多个以太网适配器 同样适用。
编写这个脚本,主要是因为最近 单位 dhcp 路由器总调整 ,导致每次都要对各台电脑进行 网卡重启 实在麻烦,于是编辑这个东西,让同志们自行运行。我想这就是 脚本语言设计 的最初目的吧

需要  ipconfig/devcon

以太网适配器 英文名称叫 "Ethernet adapter" 考虑 xp/win7,xp下的ipconfig 输出为英文而且有非法字符(隐藏的回车符)所以需要分开处理。

通过 for 循环分析 ipconfig /all 命令结果,每分析一行 m增加一
当发现 某行第一个单词为 "以太网适配器" 或前两个单词为"Ethernet adapter" ,
既可以确定该行第二单词为适配器对应的网络连接名称,
其下方第三行一定是该适配器对应的网卡名称,
随即将 n 赋值为 m+2 ,将 l 赋值为该行第二单词,这其中 xp 的 ipconfig 输出信息中包含不规则隐藏的回车符以及":"都要在赋值 l 和 n  的时候考虑到,用 set l=!l:~x,y! 的方式调整一下。
当 m = n 的时候 说明for 循环已经进行到 包含网络适配器网卡名称的 行,此时通过 for 命令从该行获取 网卡名称并存入 net_drv.txt 中。

如果存在 net_drv.txt 文件,说明系统存在 以太网适配器。
通过 两个 for 循环 分别调用  devcon 和 net_dev.txt 的内容,找出net_dev.txt 中记载的以太网适配器 对应的 硬件ID 并通过 devcon 关闭/开启之。
最后删除  net_drv.txt

这个过程没有用到 find ,主要是为了演示 for /set 等指令在 cmd 中的应用。
可能用 powershell 或者 vbs 会更简单一些。


devcon 32位 以及脚本 重启网络设备.rar (16.03 KB, 下载次数: 358)


@echo off && setlocal ENABLEDELAYEDEXPANSION
title 重新启动 以太网适配器
color 0a
echo.
set m=0
set p=0
if exist net_dev.txt del /q net_dev.txt
for /f "tokens=1,2*" %%c in ('ipconfig /all') do (
set /a m=!m!+1
if %%c*==以太网适配器* (
   set /a n=!m!+2
   set l=%%d
   set l=!l:~0,-1!)
if %%c_%%d*==Ethernet_adapter* (
   set /a n=!m!+3
   set l=%%e
   set l=!l:~0,-3!
   )
if !m!==!n! (
  set /a p=!p!+1
  for /f "tokens=1* delims=:" %%x in ("%%c%%d%%e") do (echo !p!:!l!:%%y>>net_dev.txt)
)
)
for /f %%c in ("m n l p") do set %%c=

if exist net_dev.txt (
for /f "delims=: tokens=1*" %%c in ('devcon find pci\*') do (
    for /f "tokens=1,2* delims=:" %%x in (net_dev.txt) do (  
      if "%%d"=="%%z" (
        for /f "delims=& tokens=2" %%i in ("%%c") do (
      echo 正在重新启动 %%x.%%y:%%z
      devcon disable *%%i* >nul
      devcon enable  *%%i* >nul
       )
      )
     )
  )
del /q net_dev.txt
)
echo.
echo 指令运行完毕! 按任意键退出.... &&pause>nul



[ 本帖最后由 dos时代菜鸟 于 2011-3-25 13:34 编辑 ]
回复

使用道具 举报

4#
发表于 2011-3-25 11:58:33 | 只看该作者
这个是在DOS下使用的吗。
回复

使用道具 举报

3#
发表于 2011-3-25 09:41:20 | 只看该作者
例如:adsl重新获得新ip等。。。。。。。。。。
回复

使用道具 举报

2#
发表于 2011-3-25 09:26:13 | 只看该作者
感谢分享,这个什么情况下需要用到啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-12 17:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表