无忧启动论坛

标题: 精简XP用批处理获取MAC出错 求指点 [打印本页]

作者: xiaoy    时间: 2011-11-4 21:00
标题: 精简XP用批处理获取MAC出错 求指点
@echo off
color 0a
setlocal EnableDelayedExpansion
for /f "tokens=2 delims=:" %%M in ('ipconfig /all^|find /i "Physical Address"') do set Mac=%%M
echo.        本机 MAC地址 (硬件获取):       %Mac%
pause
在正常系统下能获得MAC,但在一个RAMOS的精简系统下不能获得,
如果改获取IPCONFIG /all中上半部分的信息,能取得,下半部分不行,
如将上句改为
for /f "tokens=2 delims=:" %%M in ('ipconfig /all^|find /i "Host name"') do set Mac=%%M
能正确获得计算机名
为什么不能获取下半部分的就不行。
作者: pznpt    时间: 2011-11-4 22:24
xiaoy大大,貌似只能获得最后的物理地址的吧,如果有几个物理地址咋办啊?

可以不用FOR循环试试看:

@echo off
color 0a
ipconfig /all >>c:\1.txt
echo 本机 MAC地址 (硬件获取): >c:\2.txt
type c:\1.txt |find /i "Physical Address" >>c:\2.txt
type c:\2.txt
echo.
del c:\1.txt
del c:\2.txt
pause
作者: xiaoy    时间: 2011-11-4 23:10
现在的问题是在精简系统上,我的代码根本就不管用,没有获得,在正常的系统上可以获得,不知是哪里出错了。但它又能获得IPCONFIG/all的上半部分的内容。
谢谢你的方法,现在没有在办公室,不能再试,明天再说了。
作者: x9tian    时间: 2011-11-5 12:08
原帖由 <i>xiaoy</i> 于 2011-11-4 23:10 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2332063&ptid=201990" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
现在的问题是在精简系统上,我的代码根本就不管用,没有获得,在正常的系统上可以获得,不知是哪里出错了。但它又能获得IPCONFIG/all的上半部分的内容。<br />
谢谢你的方法,现在没有在办公室,不能再试,明天再说了。
<br />

  1. @ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
  2. FOR /F "DELIMS=" %%I IN ('IPCONFIG /ALL') DO (
  3.         CALL :A "%%I"
  4.        
  5. )

  6. rem 绑定本机IP, mac
  7. arp -s !eIP! !eMAC!
  8. echo.以下网卡己经绑定了
  9. arp -a

  10. GOTO :EOF

  11. :A
  12. SET "A=%~1"
  13. IF DEFINED A  IF NOT "!A:~0,1!"==" " SET "B=!A:~0,1!"
  14. FOR /F "TOKENS=1,2* DELIMS=:. " %%A IN ("%~1") DO (
  15.         IF /I %%A_%%B==PHYSICAL_ADDRESS SET "!B!MAC=%%C"
  16.         IF /I %%A_%%B==IP_ADDRESS       SET "!B!IP=%%C"
  17.         IF /I %%A_%%B==SUBNET_MASK      SET "!B!MASK=%%C"
  18.         IF /I %%A_%%B==DEFAULT_GATEWAY  SET "!B!WG=%%C"       
  19.         IF /I %%A_%%B==DNS_SERVERS        SET "!B!DNS=%%C"
  20. )
  21. goto :eof
复制代码

作者: xiaoy    时间: 2011-11-5 20:09
居然ipconfig /all >>c:\1.txt
只能获得如下信息
Windows IP Configuration

        Host Name . . . . . . . . . . . . : XXXX
        Primary Dns Suffix  . . . . . . . :
        Node Type . . . . . . . . . . . . : Unknown
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter


没有下半部分,太奇怪了。怪不得怎么也获取不了。
作者: x9tian    时间: 2011-11-6 19:13
原帖由 xiaoy 于 2011-11-5 20:09 发表
居然ipconfig /all >>c:\1.txt
只能获得如下信息
Windows IP Configuration

        Host Name . . . . . . . . . . . . : XXXX
        Primary Dns Suffix  . . . . . . . :
        Node Type . . . ...



   汗, 这是什么太监版的XP  我的天,太悲了
作者: xiaoy    时间: 2011-11-7 08:40
在CMD下执行 有完整的信息,输出到文件就只有半了。试着替换了相关的文件,如COMMAND.COM IPCONFIG.EXE 等,都没有搞定。看来只有换版本了,
作者: x9tian    时间: 2011-11-9 10:59
原帖由 xiaoy 于 2011-11-7 08:40 发表
在CMD下执行 有完整的信息,输出到文件就只有半了。试着替换了相关的文件,如COMMAND.COM IPCONFIG.EXE 等,都没有搞定。看来只有换版本了,

试过我上面的代码吗? 显示正常,因当能够使用的,我这个并没有生存临时文件.
作者: xiaoy    时间: 2011-11-9 13:06
试过不行, 还是怪精简过头了
作者: vino    时间: 2011-11-9 14:12
nbtstat -a %computername%
上面那個指令, 在精簡版的 XP 能執行嘛?!

如果可以, 試試底下小弟自行撰寫的 批處理指令來獲取 mac address

@echo off   
nbtstat -a %computername% | findstr^ /C:"MAC" > mac.tmp   
for /f "tokens=4 delims= " %%* in (mac.tmp) do (set "MAC=%%*")   
del /f mac.tmp   
echo %MAC%   
echo %MAC% > mac.txt   
pause
作者: x9tian    时间: 2011-11-9 19:33
楼上,  好多版本, NBTSTAT  都用不了的.  这个希望非常的不大




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3