楼 主
請教如何由設定好的文本文件中提取IP,MAC資料並作綁定?(已解
发表于 2006-11-06 01:52 · 中国 台湾 中华电信
新手上路
★
积分 8 发帖 3 注册 2006-11-06 01:06 UID 69723 性别 男
状态 离线
小弟的構想是先於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 ]
第 2 楼
发表于 2006-11-06 05:24 · 中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226 发帖 1,737 注册 2006-03-10 00:38 UID 51697 来自 成都
状态 离线
如果已经解决,不妨把代码发出来,可以给新手一个学习代码的机会。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
第 3 楼
发表于 2006-11-06 07:32 · 中国 广东 河源 电信
中级用户
★★
积分 266 发帖 98 注册 2006-04-21 20:29 UID 54223 性别 男
状态 离线
@echo off
for /f "tokens=1,2,3" %%a in (ipmac.cfg) do (
if "%computername%"=="%%a" arp -s %%b %%c
)
电脑名要大写.这个好像行的了.楼主是如何写的.发来看看.
纵是千年万年 亦难以忘记
第 4 楼
发表于 2006-11-07 12:11 · 中国 台湾 中华电信
新手上路
★
积分 8 发帖 3 注册 2006-11-06 01:06 UID 69723 性别 男
状态 离线
看到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
第 5 楼
发表于 2006-11-16 20:26 · 美国 科罗拉多州 阿拉珀霍 利特尔顿 TW_Telecom控股股份有限公司
初级用户
★
积分 35 发帖 18 注册 2006-04-26 13:31 UID 54481
状态 离线
第 6 楼
发表于 2006-11-17 02:00 · 中国 浙江 温州 电信
初级用户
★★
积分 154 发帖 67 注册 2006-10-31 00:50 UID 68933 性别 男
状态 离线
以下是前段时间写的一段代码。LZ可以拿去参考。带自动分配识别网关 分配IP DNS等功能。使用前请编辑 IP.ax文件。
***************************************************************
@cls
@echo off
@color 2f&@Title 计算机IP设置程序 v1.0
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※请输入您要定义的计算机名称. ※
@echo ※ ※
@echo ※ ( 例:PC-01;User001;) ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Set /p User=" "
@cls
Set NetMask=255.255.255.0
Set DNS1=61.153.177.196
Set DNS2=61.153.177.197
rem 如果您的DNS地址不是以上所示,请自行更改.
Set Aidi=192.168
IF Exist Name.ax Del Name.ax
Find /i " %User% " ip.ax >>Name.ax
For /f " skip=2 tokens =2 delims ==\" %%A in ( Name.ax) Do Set aidi3=%%A
For /f " tokens =1-2 delims =:/" %%c in ( ip.ax) do (
@echo %%c |find /i " Gateway" >nul&&Set Gateway=%%d
@echo %%c |find /i " %User% " >nul&&Goto :Gate
)
Goto :eof
:Gate
@echo %Gateway% >Temp.ax
For /f " tokens =3 delims =./" %%e in ( Temp.ax) do Set aidi2=%%e
@ipconfig /all >ipconfig.ax
@if exist name.pak del name.pak
@find " Ethernet adapter" ipconfig.ax>>name.pak
@for /f " skip=2 tokens =3,4 delims =: " %%A in ( name.pak) do set Name=%%A %%B
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※您的计算机名称是 " %User% " ※
@echo ※您的IP地址是 " %aidi% .%aidi2% .%aidi3% " ※
@echo ※您的子网掩码是 " %NetMask% " ※
@echo ※您的网关地址是 " %GateWay% " ※
@echo ※您的DNS地址分配为 " %DNS1% ,%DNS2% " ※
@echo ※ 当前网卡: " %Name% " ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ 确认无误后请按任意键执行修改操作.否则请停止该程序. ※
@pause >log.pak
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ ※
@echo ※ 程序正在执行操作,请稍候....... ※
@echo ※ ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Reg add " HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %User% /f >log.pak
@netsh interface ip set address " %Name% " static %aidi% .%aidi2% .%aidi3% %NetMask% %Gateway% 1 >log.pak
@netsh interface ip set dns " %Name% " static %DNS1% >log.pak
@netsh interface ip add dns " %Name% " %DNS2% >log.pak
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ 恭喜您! 修改成功了. ※
@echo ※ ※
@echo ※ 该程序由韩和编写制作.您可以传播本程序,但请保留本版权信息! ※
@echo ※ ※
@echo ※ 按任意键退出程序 ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@pause >log.pak
@if exist name.pak del name.pak
@if exist ipconfig.ax del ipconfig.ax
@if exist Name.ax del Name.ax
@if exist log.pak del log.pak
@if exist temp.ax del temp.ax
韩和发表于: 2006-11-16 13:02
[
Last edited by newaifi on 2006-11-17 at 02:02 AM ]
第 7 楼
发表于 2006-11-17 02:08 · 中国 浙江 温州 电信
初级用户
★★
积分 154 发帖 67 注册 2006-10-31 00:50 UID 68933 性别 男
状态 离线
似乎跑题了.. 呵呵...
这个好像才是... 带自动识别本机IP地址和网关地址的.. 你要做的其实就是打开本程序.
************************************************************
@echo off &title arp绑定工具
@if exist ipconfig.txt del ipconfig.txt
@ipconfig /all >ipconfig.txt
@if exist arp.txt del arp.txt
@arp.exe -a > arp.txt
@if exist phyaddr.txt del phyaddr.txt
@find " Physical Address" ipconfig.txt >phyaddr.txt
@if exist ipaddr.txt del ipaddr.txt
@find " IP Address" ipconfig.txt >ipaddr.txt
@for /f " skip=2 tokens =15" %%I in ( ipaddr.txt) do set IPAddress=%%I
@for /f " skip=2 tokens =12" %%M in ( phyaddr.txt) do set strMac=%%M
@arp.exe -d
@arp.exe -s %IPAddress% %strMac%
@if exist GateWay.txt del gateway.txt
@find /i " Default Gateway" ipconfig.txt >>gateway.txt
@for /f " skip=2 tokens =13" %%X in ( GateWay.txt) do set GateWay=%%X
@if exist mac.txt del mac.txt
@find " %GateWay% " arp.txt > mac.txt
@for /f " skip=2 tokens =2" %%Z in ( mac.txt) do set Mac=%%Z
@arp.exe -s %GateWay% %Mac%
@if exist mac.txt del mac.txt
@if exist arp.txt del arp.txt
@if exist GateWay.txt del gateway.txt
@if exist ipconfig.txt del ipconfig.txt
@if exist phyaddr.txt del phyaddr.txt
@if exist ipaddr.txt del ipaddr.txt
@if exist %Windir% \RunOne.bat del %Windir% \RunOne.bat
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ 你的本地连接IP: %IPAddress% ※
@echo ※ 你的网卡MAC地址: %strMac% ※
@echo ※ 你的网关IP地址: %GateWay% ※
@echo ※ 你的网关MAC地址: %MAC% ※
@echo ※ ※
@echo ※ 按任意键继续 ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@pause > log.txt
@cls
@color 2f
@echo ┌┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┐
@echo ┆ ━ 本地Mac及网关地址已经绑定完毕. ━ ┆
@echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
@echo ┆ ┆
@echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
@echo ┆ ━ 本程序由韩和编写,你可以任意传播此程序.但请保留此版权信息.谢谢. ━ ┆
@echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
@echo ┆ ┆
@echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
@echo ┆ ━ 作者联系方式:newaifi@gmail.com QQ:9026573 ━ ┆
@echo ┆ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ ┆
@echo ┆ 按任意键退出 ┆
@echo ┕┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┘
@pause >>log.txt
@if exist log.txt del log.txt
韩和发表于: 2006-11-16 13:12
第 8 楼
发表于 2006-11-23 03:10
中级用户
★★
DOS之日
积分 337 发帖 161 注册 2006-11-04 05:27 UID 69523 性别 男
状态 离线
zerostudy兄写的就不错.
for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正