Board logo

标题: 請教如何由設定好的文本文件中提取IP,MAC資料並作綁定?(已解 [打印本页]

作者: evanpp     时间: 2006-11-6 01:52    标题: 請教如何由設定好的文本文件中提取IP,MAC資料並作綁定?(已解

小弟的構想是先於IPMAC.CFG文件中設定好電腦名稱.IP.MAC資料,格式為:
A001 192.168.0.1 00-00-00-00-00-01
A002 192.168.0.2 00-00-00-00-00-02
......
然後以電腦名稱為判斷依據執行arp -s  %IP% %MAC%
例如在名稱為A001的電腦上便會執行 arp -s 192.168.0.1 00-00-00-00-00-01的指令作綁定,請教如此需求下要如何以批處理文件來達成?

小弟不才. 爬了一個晚上文弄得頭昏眼花仍不知如何達成@_@

===============================================

以解決~沒想到如此簡單= =

[ Last edited by evanpp on 2006-11-5 at 05:10 PM ]
作者: namejm     时间: 2006-11-6 05:24
  如果已经解决,不妨把代码发出来,可以给新手一个学习代码的机会。
作者: zerostudy     时间: 2006-11-6 07:32
@echo off
for /f "tokens=1,2,3" %%a in (ipmac.cfg) do (
if "%computername%"=="%%a" arp -s %%b %%c
)

电脑名要大写.这个好像行的了.楼主是如何写的.发来看看.
作者: evanpp     时间: 2006-11-7 12:11
看到zerostudy簡潔的代碼讓小弟有點慚愧.....
不過據小弟測試的結果雖然可以正確讀取但似乎無法寫入arp tables??
以 arp -a 指令並未看到由 ipmac.cfg 所導入的資訊

以下是小弟冗長的代碼...

@echo off
if exist pcname.txt del pcname.txt
@echo %COMPUTERNAME% >pcname.txt
for /f %%C in (pcname.txt) do set pcname=%%C
if exist Computer.txt del Computer.txt
find "%pcname%" \\server\game$\Config.cfg >Computer.txt
for /f "skip=2 tokens=2" %%I in (Computer.txt) do set ip=%%I
for /f "skip=2 tokens=3" %%M in (Computer.txt) do set mac=%%M
arp -d
arp -s %IP% %Mac%
del Computer.txt pcname.txt
exit
作者: honhaizh     时间: 2006-11-16 20:26
学习一下
作者: newaifi     时间: 2006-11-17 02:00
以下是前段时间写的一段代码。LZ可以拿去参考。带自动分配识别网关 分配IP DNS等功能。使用前请编辑 IP.ax文件。

***************************************************************

  Quote:

  1. @cls
  2. @echo off
  3. @color 2f&@Title 计算机IP设置程序 v1.0
  4. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  5. @echo ※请输入您要定义的计算机名称.                                         ※
  6. @echo ※                                                                    ※
  7. @echo ※                                                (例:PC-01;User001;)
  8. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  9. Set /p User=""
  10. @cls

  11. Set NetMask=255.255.255.0
  12. Set DNS1=61.153.177.196
  13. Set DNS2=61.153.177.197
  14. rem 如果您的DNS地址不是以上所示,请自行更改.

  15. Set Aidi=192.168

  16. IF Exist Name.ax Del Name.ax
  17. Find /i "%User%" ip.ax >>Name.ax
  18. For /f "skip=2 tokens=2 delims==\" %%A in (Name.ax) Do Set aidi3=%%A

  19. For /f "tokens=1-2 delims=:/" %%c in (ip.ax) do (
  20. @echo %%c|find /i "Gateway">nul&&Set Gateway=%%d
  21. @echo %%c|find /i "%User%">nul&&Goto :Gate
  22. )
  23. Goto :eof
  24. :Gate
  25. @echo %Gateway%>Temp.ax
  26. For /f "tokens=3 delims=./" %%e in (Temp.ax) do Set aidi2=%%e

  27. @ipconfig /all >ipconfig.ax
  28. @if exist name.pak  del name.pak
  29. @find "Ethernet adapter" ipconfig.ax>>name.pak
  30. @for /f "skip=2 tokens=3,4 delims=: " %%A in (name.pak) do set Name=%%A %%B
  31. @cls

  32. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  33. @echo ※您的计算机名称是 "%User%"                                            ※
  34. @echo ※您的IP地址是 "%aidi%.%aidi2%.%aidi3%"                                          ※
  35. @echo ※您的子网掩码是 "%NetMask%"                                        ※
  36. @echo ※您的网关地址是 "%GateWay%"                                        ※
  37. @echo ※您的DNS地址分配为 "%DNS1%,%DNS2%"                     ※
  38. @echo ※                                当前网卡: "%Name%"                ※
  39. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

  40. @echo ※          确认无误后请按任意键执行修改操作.否则请停止该程序.          ※
  41. @pause >log.pak

  42. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  43. @echo ※                                                                      ※
  44. @echo ※                   程序正在执行操作,请稍候.......                     ※
  45. @echo ※                                                                      ※
  46. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

  47. Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %User% /f >log.pak
  48. @netsh interface ip set address "%Name%" static %aidi%.%aidi2%.%aidi3% %NetMask% %Gateway% 1 >log.pak
  49. @netsh interface ip set dns "%Name%" static %DNS1% >log.pak
  50. @netsh interface ip add dns "%Name%" %DNS2% >log.pak
  51. @cls

  52. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  53. @echo ※                           恭喜您!修改成功了.                         ※
  54. @echo ※                                                                      ※
  55. @echo ※       该程序由韩和编写制作.您可以传播本程序,但请保留本版权信息!      ※
  56. @echo ※                                                                      ※
  57. @echo ※                                                    按任意键退出程序  ※
  58. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  59. @pause >log.pak
  60. @if exist name.pak del name.pak
  61. @if exist ipconfig.ax del ipconfig.ax
  62. @if exist Name.ax del Name.ax
  63. @if exist log.pak del log.pak
  64. @if exist temp.ax del temp.ax

        韩和发表于:  2006-11-16  13:02

[ Last edited by newaifi on 2006-11-17 at 02:02 AM ]
作者: newaifi     时间: 2006-11-17 02:08
似乎跑题了.. 呵呵...
这个好像才是...  带自动识别本机IP地址和网关地址的.. 你要做的其实就是打开本程序.

************************************************************

  Quote:

  1. @echo off&title arp绑定工具
  2. @if exist ipconfig.txt  del ipconfig.txt  
  3. @ipconfig /all >ipconfig.txt
  4. @if exist arp.txt del arp.txt
  5. @arp.exe -a > arp.txt
  6. @if exist phyaddr.txt   del phyaddr.txt
  7. @find  "Physical Address" ipconfig.txt >phyaddr.txt
  8. @if exist ipaddr.txt   del ipaddr.txt
  9. @find  "IP Address" ipconfig.txt >ipaddr.txt
  10. @for /f "skip=2 tokens=15" %%I in (ipaddr.txt) do set IPAddress=%%I
  11. @for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set strMac=%%M
  12. @arp.exe -d
  13. @arp.exe -s %IPAddress% %strMac%

  14. @if exist GateWay.txt  del gateway.txt
  15. @find /i "Default Gateway" ipconfig.txt >>gateway.txt
  16. @for /f "skip=2 tokens=13" %%X in (GateWay.txt) do set GateWay=%%X

  17. @if exist mac.txt del mac.txt
  18. @find "%GateWay%" arp.txt > mac.txt
  19. @for /f "skip=2 tokens=2" %%Z in (mac.txt) do set Mac=%%Z
  20. @arp.exe -s %GateWay% %Mac%

  21. @if exist mac.txt del mac.txt
  22. @if exist arp.txt del arp.txt
  23. @if exist GateWay.txt  del gateway.txt
  24. @if exist ipconfig.txt  del ipconfig.txt
  25. @if exist phyaddr.txt   del phyaddr.txt
  26. @if exist ipaddr.txt   del ipaddr.txt
  27. @if exist %Windir%\RunOne.bat del %Windir%\RunOne.bat
  28. @cls
  29. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  30. @echo ※     你的本地连接IP:  %IPAddress%                                   ※
  31. @echo ※     你的网卡MAC地址: %strMac%                               ※
  32. @echo ※     你的网关IP地址:  %GateWay%                                   ※
  33. @echo ※     你的网关MAC地址: %MAC%                               ※
  34. @echo ※                                                                      ※
  35. @echo ※                                                    按任意键继续      ※
  36. @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
  37. @pause > log.txt
  38. @cls
  39. @color 2f                        
  40. @echo ┌┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┐
  41. @echo ┆                  ━   本地Mac及网关地址已经绑定完毕.   ━              ┆
  42. @echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
  43. @echo ┆                                                                        ┆
  44. @echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
  45. @echo ┆ ━  本程序由韩和编写,你可以任意传播此程序.但请保留此版权信息.谢谢. ━  ┆
  46. @echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
  47. @echo ┆                                                                        ┆
  48. @echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
  49. @echo ┆          ━    作者联系方式:newaifi@gmail.com  QQ:9026573    ━        ┆
  50. @echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
  51. @echo ┆                                                     按任意键退出       ┆
  52. @echo ┕┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┘
  53. @pause >>log.txt
  54. @if exist log.txt   del log.txt
        韩和发表于:  2006-11-16  13:12


作者: hxuan999     时间: 2006-11-23 03:10
zerostudy兄写的就不错.