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

[文本处理] [已解决]文件某一行获取,本地系统获取。bat变量对比代码有问题?

本帖最后由 ygqiang 于 2018-10-26 11:27 编辑

[已解决]文件某一行获取,从本地系统获取。bat变量对比代码哪里有问题?

遇到的问题:实际执行的时候,无论是否相同,总是循环修改计算机名和ip地址。
user-ip.txt内容如下:
er7798
192.168.8.77
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ———————————————————————————————————————————————————————————————
  4. cls
  5. for /f "delims=" %%i in (c:\user-ip.txt) do (
  6. set /a j+=1
  7. if !j!==1 set nana=%%i
  8. if !j!==2 set ipip=%%i
  9. )
  10. ———————————————————————————————————————————————————————————————
  11. cls
  12. echo %nana%
  13. echo %ipip%
  14. 1pause
  15. cls
  16. set Mask=255.255.255.128
  17. set Gway=192.168.8.1
  18. :status
  19. cls
  20. @ECHO OFF&Setlocal EnableDelayedExpansion
  21. set _Name=计算机名----&set _Domain=工作组------&set _IPAddress=IP地址------
  22. set _IPSubnet=子网掩码----&set _DefaultIPGateway=网关--------&set _DNSServerSearchOrder=DNS---------
  23. FOR /F "tokens=*" %%A IN ('WMIC Path Win32_ComputerSystem Get Domain^,Name /Value 2^>Nul') DO (
  24.     FOR /F "tokens=*" %%i in ("%%A") do set %%i
  25. )
  26. cls
  27. FOR /F "tokens=*" %%A IN ('WMIC NICConfig WHERE "IPEnabled=TRUE" GET DefaultIPGateway^,Description^,DNSServerSearchOrder^,IPAddress^,IPSubnet /value 2^>Nul') DO (
  28.    FOR /F "tokens=*" %%i in ("%%A") do set %%i
  29. )
  30. cls
  31. for %%i in (Name IPAddress IPSubnet DefaultIPGateway) do (
  32.     set %%i=!%%i:{=!
  33.     set %%i=!%%i:}=!
  34.     set %%i=!%%i:"=!
  35.     1echo !_%%i!: !%%i:,=  !  
  36.     cls
  37. )
  38. echo %name%
  39. echo %IPAddress%
  40. 1pause
  41. cls
  42. if "%name%"=="%nana%" (
  43. if "%IPAddress%"=="%ipip%" goto :cbsnext
  44. )
  45. echo nene
  46. 1pause
  47. cls
  48. cls
  49. echo 计算机名:%nana%
  50. echo ip地址:%ipip%
  51. echo 正在修改中...
  52. 1pause
  53. cls
  54. ping 127.0.0.1 -n 2 >nul 2>nul
  55. ———————————————————————
  56. cls
  57. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t reg_sz /d %nana% /f >nul 2>nul
  58. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t reg_sz /d %nana% /f >nul 2>nul
  59. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %nana% /f >nul 2>nul
  60. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /t reg_sz /d %nana% /f >nul 2>nul
  61. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t REG_SZ /d "%nana%" /f
  62. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%nana%" /f
  63. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "Hostname" /t REG_SZ /d "%nana%" /f
  64. reg add "HKLM\SYSTEM\ControlSet002\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%nana%" /f
  65. ———————————————————————
  66. cls
  67. ::用ipconfig /all命令获取网卡名称。
  68. cls
  69. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set macname=%%j
  70. ::用for命令删除网卡名称后面的冒号。
  71. cls
  72. FOR /F "tokens=1* delims=:" %%i in ("%macname%") do set a=%%i
  73. echo 网卡连接名:%a%
  74. cls
  75. 1pause
  76. cls
  77. netsh interface ip set address name="%a%" source=static addr=%ipip% mask=%Mask% gateway=%Gway% gwmetric=1 >nul 2>nul
  78. cls
  79. 1pause
  80. cls
  81. shutdown -r -t 2
  82. :cbsnext
  83. echo okok
  84. 1pause
  85. cls
  86. exit
复制代码
1

评分人数

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

第几行到第几行代码被重复执行了?

如果是65、66行的if判断出了问题,那就在64行查看以下几个变量的内容到底是什么:
echo "%name%"
echo "%nana%"
echo "%IPAddress%"
echo "%ipip%"
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

对比文件里存储的计算机名和ip。跟本地系统获取的是否一样.

如果一样,就直接退出。
如果不一样,就以文件里面的为主,修改当前xp系统的计算机名和ip地址。

遇到的问题是:那4个变量,对比显示出来,看着是一样的。但是还会自动修改计算机名和ip地址。

TOP

找到问题了。

获取txt文件某一行赋值给变量,然后修改本地xp系统计算机名,会带空格。
比如“er7798”,修改本地系统计算机名会变成“er7798   ”
如何去掉这些空格?

TOP

本帖最后由 ygqiang 于 2018-10-26 11:26 编辑

回复 2# Batcher


    谢谢。解决了。
nana=%%i  后面带了2个空格,原来是这么个简单问题。

TOP

代码写作不规范,你在开始的第10和11 行都有空格 ,你改下看看
智慧是,利用最简单的代码替代复杂事情的处理过程。
付款请扫头像二维码码,谢谢

TOP

回复 6# lifei259


    谢谢,确实是这个低端错误。

TOP

返回列表