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

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

[复制链接]
发表于 2018-10-26 10:29:12 | 显示全部楼层 |阅读模式
本帖最后由 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

复制代码

评分

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

查看全部评分

发表于 2018-10-26 10:44:59 | 显示全部楼层
第几行到第几行代码被重复执行了?

如果是65、66行的if判断出了问题,那就在64行查看以下几个变量的内容到底是什么:
echo "%name%"
echo "%nana%"
echo "%IPAddress%"
echo "%ipip%"
 楼主| 发表于 2018-10-26 10:53:42 | 显示全部楼层
对比文件里存储的计算机名和ip。跟本地系统获取的是否一样.

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

遇到的问题是:那4个变量,对比显示出来,看着是一样的。但是还会自动修改计算机名和ip地址。
 楼主| 发表于 2018-10-26 11:04:27 | 显示全部楼层
找到问题了。

获取txt文件某一行赋值给变量,然后修改本地xp系统计算机名,会带空格。
比如“er7798”,修改本地系统计算机名会变成“er7798   ”
如何去掉这些空格?
 楼主| 发表于 2018-10-26 11:14:17 | 显示全部楼层
本帖最后由 ygqiang 于 2018-10-26 11:26 编辑

回复 2# Batcher


    谢谢。解决了。
nana=%%i  后面带了2个空格,原来是这么个简单问题。
发表于 2018-10-26 11:34:44 | 显示全部楼层
代码写作不规范,你在开始的第10和11 行都有空格 ,你改下看看
 楼主| 发表于 2018-10-29 09:28:57 | 显示全部楼层
回复 6# lifei259


    谢谢,确实是这个低端错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 20:16 , Processed in 0.019324 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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