中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 請教如何由設定好的文本文件中提取IP,MAC資料並作綁定?(已解
作者:
标题: 請教如何由設定好的文本文件中提取IP,MAC資料並作綁定?(已解 上一主题 | 下一主题
evanpp
新手上路





积分 8
发帖 3
注册 2006-11-6
状态 离线
『楼 主』:  請教如何由設定好的文本文件中提取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 ]

2006-11-6 01:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  如果已经解决,不妨把代码发出来,可以给新手一个学习代码的机会。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-6 05:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zerostudy
中级用户





积分 266
发帖 98
注册 2006-4-21
状态 离线
『第 3 楼』:  

@echo off
for /f "tokens=1,2,3" %%a in (ipmac.cfg) do (
if "%computername%"=="%%a" arp -s %%b %%c
)

电脑名要大写.这个好像行的了.楼主是如何写的.发来看看.



纵是千年万年 亦难以忘记
2006-11-6 07:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
evanpp
新手上路





积分 8
发帖 3
注册 2006-11-6
状态 离线
『第 4 楼』:  

看到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

2006-11-7 12:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
honhaizh
初级用户





积分 35
发帖 18
注册 2006-4-26
状态 离线
『第 5 楼』:  

学习一下

2006-11-16 20:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
newaifi
初级用户





积分 154
发帖 67
注册 2006-10-31
状态 离线
『第 6 楼』:  

以下是前段时间写的一段代码。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 ]

2006-11-17 02:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
newaifi
初级用户





积分 154
发帖 67
注册 2006-10-31
状态 离线
『第 7 楼』:  

似乎跑题了.. 呵呵...
这个好像才是...  带自动识别本机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



2006-11-17 02:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hxuan999
中级用户

DOS之日


积分 337
发帖 161
注册 2006-11-4
状态 离线
『第 8 楼』:  

zerostudy兄写的就不错.



for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
2006-11-23 03:10
查看资料  发送邮件  发短消息 网志  OICQ (33899867)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: