[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
for /f "tokens=12 delims= " %%i in ('ipconfig /all^|find /i "Physical Address"') do set mac=%%i
for /f "tokens=1,2*" %%i in ('ipconfig /all^|find "Ethernet adapter"')  do set Ethernet=%%k

这两句检索的字眼出错了"Physical Address"和"Ethernet adapter",不匹配。
XP 下IPCONFIG /ALL 命令出来的字段字眼和 WIN7是不一样的,,

具体是什么字眼自行打命令修改。我也不敢肯定你用的版本和我的本版本是否一样,,,,

TOP

本帖最后由 jiavip 于 2019-3-19 00:10 编辑

把这两句改成这样,应该能正常获取MAC 和网卡名。至少我在朋友电脑上运行是可以获取。
for /f "tokens=15 delims= " %%i in ('ipconfig /all^|find /i "物理地址"') do set mac=%%i
for /f "tokens=1,2*" %%i in ('ipconfig /all^|find "以太网适配器"')  do set Ethernet=%%j

TOP

看了一下你的 1.TXT 多网卡获取MAC 地址那样写法会出错只会获取最后一个MAC 地址,,
把获取MAC 的那行改成 ,就只会获取物理MAC 地址,
for /f "skip=2 tokens=1 delims= " %%a in ('getmac') do set mac=%%~a

其实脚本调试很简单的,只要多点应用,,
ECHO %MAC%
ECHO %Ethernet%
ECHO %NAME%
ECHO %P%
PAUSE
在变量应用前,查看变量变化就可以了。
这个是一种思路,学好了对你有用。

TOP

@echo off
echo 正在配置IP地址、DNS请稍候……
set MASK=255.255.255.0
set GATEWAY=192.168.103.254
set DNS1=202.96.128.143
set DNS2=202.96.128.68
set WINS=192.168.103.254
for /f "skip=2 tokens=1 delims= " %%a in ('getmac') do set mac=%%a
for /f "tokens=1,2*" %%i in ('ipconfig /all^|find "以太网适配器"')  do set Ethernet=%%j
for /f "tokens=1,2" %%i in ('more /e +21 %0 ^|find /i "%mac:~,-1%"') do set "name=%%i"&set "IP=%%j"
for /f "tokens=4" %%j in ('more /e +21 %0 ^|find /i "%mac:~,-1%"') do set "p=%%j"
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\parameters" /v srvcomment /t reg_sz /d %p% /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v srvcomment /t reg_sz /d %p% /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %name% /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %name% /f >nul 2>nul
netsh interface ip set address "%Ethernet:~,-2%" static %IP% %Mask% %GATEWAY% 1 >nul 2>nul
netsh interface ip set dns "%Ethernet:~,-2%" static %DNS1% register=PRIMARY >nul 2>nul
netsh interface ip add dns "%Ethernet:~,-2%"  %DNS2% index=2 >nul 2>nul
netsh interface ip set wins "%Ethernet:~,-2%" static %WINS%  >nul 2>nul
exit
A01 192.168.103.101 10-60-4b-77-fe-a0 北三楼A01
A02 192.168.103.102 10-60-4b-8b-50-be 北三楼A02
A03 192.168.103.103 10-60-4b-88-61-7f 北三楼A03
A04 192.168.103.104 10-60-4b-88-70-a6 北三楼A04
A05 192.168.103.105 10-60-4B-89-46-CE 北三楼A05
A06 192.168.103.106 10-60-4b-8b-51-3f 北三楼A06
A07 192.168.103.107 10-60-4b-8b-53-cd 北三楼A07
A08 192.168.103.108 10-60-4b-8b-51-38 北三楼A08
A09 192.168.103.109 10-60-4b-77-e5-c4 北三楼A09
A10 192.168.103.110 10-60-4b-77-ea-c2 北三楼A10
B01 192.168.103.111 10-60-4b-77-e7-e6 北三楼B01
B02 192.168.103.112 10-60-4b-77-fe-80 北三楼B02
B03 192.168.103.113 10-60-4b-88-5e-cc 北三楼B03
B04 192.168.103.114 10-60-4b-77-ea-a9 北三楼B04
B05 192.168.103.115 10-60-4b-77-fe-9e 北三楼B05
B06 192.168.103.116 10-60-4b-77-e7-eb 北三楼B06
B07 192.168.103.117 10-60-4b-88-70-a1 北三楼B07
B08 192.168.103.118 10-60-4b-8b-50-99 北三楼B08
B09 192.168.103.119 10-60-4b-86-2f-d2 北三楼B09
B10 192.168.103.120 10-60-4b-77-fe-f4 北三楼B10

------------------------
以上代码  理论上来说应该没问题,而且more /e +21 %0这个变量的最终结果你没查看,+21在脚本里是个列数单位如果你增加了空格行或代码行,这个+21是需要根据脚本的变化来修改数值的!

其次你没看懂我在10楼的回复!如果你看不懂!永远也不不能自行调试脚本,,,,,

TOP

再或者,你想拿实打实可用的脚本,付钱呗!自己不想研究,剩下的只有一种很简单的方式,用钱卖!
作为网友给你提供一个思路和学习方式已经很够格了,自己如果不想去努力那你只能去聘请,那需要金钱。
学习需要谦虚,需要聆听!还需要学费,,,,你要的只想要最终脚本!
你不懂得尊重,教会你的人和给你帮助的人,,

TOP

其实他那代码的写法,按照我的理解就是不怎么易传播,说白了就是通用性太低。。。
全部代码里竟然没有判断句,都是在举媒,检索,,,
脚本编写中判断是非常重要的复合写法。。。
按照脚本写法的思路应该是,,判断MAC 地址,然后例举对应MAC 地址的 计算机名 和 IP 数据。
再然后进行修改,而整个脚本完全没有判断语句,只用了一种检索手法,
这个脚本很不方便复制和传播,,因为在复制和传播的过程当中,格式或许会产生变化,从而导致脚本变量失效。

TOP

返回列表