找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24098|回复: 3

[网络连接] [已解决]xp系统下如果拔掉网线,开机启动批处理,会导致一直循环重启。如何修改?

[复制链接]
发表于 2019-3-16 20:24:47 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2019-3-16 22:23 编辑

xp系统下如果拔掉网线,开机启动批处理,会导致一直循环重启。如何修改?

现在的批处理代码功能是:每次xp系统开启就运行1次,获取c:\user-ip.txt文件里面的参数信息。同时获取本地计算机的计算机名与ip地址。
对比如果一致,就直接退出。如果不一致,就以txt文件里面的参数修改本地计算机。

遇到问题:如果把网线拔下来,开机进入xp系统,代码运行以后会自动重启,这样一直循环重启。
修改要求:拔掉网线情况下,进入xp系统运行批处理代码,如果检测出来拔掉网线的情况,就直接循环3分钟监测,一直持续到插上网线,才继续对比参数进行后续操作。
  1. @echo off
  2. setlocal enabledelayedexpansion


  3. ———————————————————————————————————————————————————————————————
  4. cls

  5. if not exist c:\user-ip.txt (echo txterror & 1pause & exit)

  6. echo nextok
  7. 1pause
  8. cls

  9. for /f "delims=" %%i in (c:\user-ip.txt) do (
  10. set /a j+=1
  11. if !j!==1 set nana=%%i
  12. if !j!==2 set ipip=%%i
  13. )


  14. ———————————————————————————————————————————————————————————————
  15. cls




  16. echo %nana%------
  17. echo %ipip%------
  18. 1pause
  19. cls


  20. set Mask=255.255.255.128
  21. set Gway=192.168.8.1




  22. :status
  23. cls
  24. @ECHO OFF&Setlocal EnableDelayedExpansion
  25. set _Name=计算机名----&set _Domain=工作组------&set _IPAddress=IP地址------
  26. set _IPSubnet=子网掩码----&set _DefaultIPGateway=网关--------&set _DNSServerSearchOrder=DNS---------
  27. FOR /F "tokens=*" %%A IN ('WMIC Path Win32_ComputerSystem Get Domain^,Name /Value 2^>Nul') DO (
  28.     FOR /F "tokens=*" %%i in ("%%A") do set %%i
  29. )

  30. echo %Name%------
  31. echo %IPAddress%------
  32. 1pause

  33. cls

  34. FOR /F "tokens=*" %%A IN ('WMIC NICConfig WHERE "IPEnabled=TRUE" GET DefaultIPGateway^,Description^,DNSServerSearchOrder^,IPAddress^,IPSubnet /value 2^>Nul') DO (
  35.    FOR /F "tokens=*" %%i in ("%%A") do set %%i
  36. )

  37. echo %Name%------
  38. echo %IPAddress%------
  39. 1pause
  40. cls

  41. for %%i in (Name IPAddress IPSubnet DefaultIPGateway) do (
  42.     set %%i=!%%i:{=!
  43.     set %%i=!%%i:}=!
  44.     set %%i=!%%i:"=!
  45.     echo !_%%i!: !%%i:,=  !  
  46. 1pause
  47.     cls
  48. )

  49. echo %Name%=========
  50. echo %IPAddress%=========
  51. 1pause
  52. cls



  53. if "%name%"=="%nana%" (
  54. if "%IPAddress%"=="%ipip%" goto :cbsnext
  55. )

  56. echo nene
  57. 1pause
  58. cls






  59. cls
  60. echo 计算机名:%nana%
  61. echo ip地址:%ipip%
  62. echo 正在修改中...
  63. 1pause
  64. cls

  65. ping 127.0.0.1 -n 2 >nul 2>nul

  66. ———————————————————————
  67. cls

  68. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t reg_sz /d %nana% /f >nul 2>nul
  69. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t reg_sz /d %nana% /f >nul 2>nul

  70. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %nana% /f >nul 2>nul
  71. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /t reg_sz /d %nana% /f >nul 2>nul


  72. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t REG_SZ /d "%nana%" /f
  73. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%nana%" /f
  74. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "Hostname" /t REG_SZ /d "%nana%" /f
  75. reg add "HKLM\SYSTEM\ControlSet002\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%nana%" /f


  76. ———————————————————————
  77. cls

  78. ::用ipconfig /all命令获取网卡名称。
  79. cls
  80. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set macname=%%j

  81. ::用for命令删除网卡名称后面的冒号。
  82. cls
  83. FOR /F "tokens=1* delims=:" %%i in ("%macname%") do set a=%%i

  84. echo 网卡连接名:%a%
  85. cls

  86. 1pause
  87. cls


  88. netsh interface ip set address name="%a%" source=static addr=%ipip% mask=%Mask% gateway=%Gway% gwmetric=1 >nul 2>nul
  89. cls

  90. 1pause
  91. cls

  92. shutdown -r -t 2








  93. :cbsnext
  94. ———————————————————————
  95. echo user-ip文件夹中的与本地机器获取到的一致


  96. echo okok
  97. 1pause
  98. cls


  99. exit
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2019-3-16 22:24:10 | 显示全部楼层
已经解决,测试通过。
  1. @echo off

  2. :star

  3. setlocal enabledelayedexpansion


  4. ———————————————————————————————————————————————————————————————
  5. cls

  6. if not exist c:\user-ip.txt (echo txterror & 1pause & exit)

  7. echo nextok
  8. 1pause
  9. cls

  10. for /f "delims=" %%i in (c:\user-ip.txt) do (
  11. set /a j+=1
  12. if !j!==1 set nana=%%i
  13. if !j!==2 set ipip=%%i
  14. )


  15. ———————————————————————————————————————————————————————————————
  16. cls




  17. echo %nana%------
  18. echo %ipip%------
  19. 1pause
  20. cls


  21. set Mask=255.255.255.128
  22. set Gway=192.168.8.1




  23. :status
  24. cls
  25. @ECHO OFF&Setlocal EnableDelayedExpansion
  26. set _Name=计算机名----&set _Domain=工作组------&set _IPAddress=IP地址------
  27. set _IPSubnet=子网掩码----&set _DefaultIPGateway=网关--------&set _DNSServerSearchOrder=DNS---------
  28. FOR /F "tokens=*" %%A IN ('WMIC Path Win32_ComputerSystem Get Domain^,Name /Value 2^>Nul') DO (
  29.     FOR /F "tokens=*" %%i in ("%%A") do set %%i
  30. )

  31. echo %Name%------
  32. echo %IPAddress%------
  33. 1pause

  34. cls

  35. FOR /F "tokens=*" %%A IN ('WMIC NICConfig WHERE "IPEnabled=TRUE" GET DefaultIPGateway^,Description^,DNSServerSearchOrder^,IPAddress^,IPSubnet /value 2^>Nul') DO (
  36.    FOR /F "tokens=*" %%i in ("%%A") do set %%i
  37. )

  38. echo %Name%------
  39. echo %IPAddress%------
  40. 1pause
  41. cls

  42. for %%i in (Name IPAddress IPSubnet DefaultIPGateway) do (
  43.     set %%i=!%%i:{=!
  44.     set %%i=!%%i:}=!
  45.     set %%i=!%%i:"=!
  46.     echo !_%%i!: !%%i:,=  !  
  47. 1pause
  48.     cls
  49. )

  50. echo %Name%=========
  51. echo %IPAddress%=========
  52. 1pause
  53. cls



  54. if "%name%"=="%nana%" (
  55. if "%IPAddress%"=="0.0.0.0" goto :cbsnetn
  56. if "%IPAddress%"=="%ipip%" goto :cbsnext
  57. )

  58. echo nene
  59. 1pause
  60. cls






  61. cls
  62. echo 计算机名:%nana%
  63. echo ip地址:%ipip%
  64. echo 正在修改中...
  65. 1pause
  66. cls

  67. ping 127.0.0.1 -n 2 >nul 2>nul

  68. ———————————————————————
  69. cls

  70. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t reg_sz /d %nana% /f >nul 2>nul
  71. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t reg_sz /d %nana% /f >nul 2>nul

  72. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %nana% /f >nul 2>nul
  73. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /t reg_sz /d %nana% /f >nul 2>nul


  74. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t REG_SZ /d "%nana%" /f
  75. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%nana%" /f
  76. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "Hostname" /t REG_SZ /d "%nana%" /f
  77. reg add "HKLM\SYSTEM\ControlSet002\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%nana%" /f


  78. ———————————————————————
  79. cls

  80. ::用ipconfig /all命令获取网卡名称。
  81. cls
  82. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set macname=%%j

  83. ::用for命令删除网卡名称后面的冒号。
  84. cls
  85. FOR /F "tokens=1* delims=:" %%i in ("%macname%") do set a=%%i

  86. echo 网卡连接名:%a%
  87. cls

  88. 1pause
  89. cls


  90. netsh interface ip set address name="%a%" source=static addr=%ipip% mask=%Mask% gateway=%Gway% gwmetric=1 >nul 2>nul
  91. cls

  92. 1pause
  93. cls

  94. shutdown -r -t 2




  95. :cbsnetn
  96. echo neterror
  97. 1pause
  98. cls
  99. ping 127.0.0.1 -n 120 >nul 2>nul

  100. goto :star




  101. :cbsnext

  102. echo okok
  103. 1pause
  104. cls


  105. exit
复制代码
发表于 2019-3-17 00:35:54 | 显示全部楼层
回复 2# ygqiang

谢谢您的无私分享!
可否把您的这个“c:\user-ip.txt”文件内容格式分享出来?我也想使用您这个功能。
先谢谢了!!
   
 楼主| 发表于 2019-3-19 09:30:24 | 显示全部楼层
回复 3# locoman


    txt内容举例如下:
mypc
10.16.8.2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 02:27 , Processed in 0.019181 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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