[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

已经解决,测试通过。
  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
复制代码

TOP

回复 2# ygqiang

谢谢您的无私分享!
可否把您的这个“c:\user-ip.txt”文件内容格式分享出来?我也想使用您这个功能。
先谢谢了!!
   

TOP

回复 3# locoman


    txt内容举例如下:
mypc
10.16.8.2

TOP

返回列表