min.txt文件在C盘根目录,内容是20台机子的MAC.IP和计算机名,分为三列,第一列是MAC地址,第二列是IP地址,第三列是计算机名,各列之间用一个空格隔开,比如第一行是:AA-BB-CC-DD-EE-FF 192.168.1.1 PC-01
我想实现的是每台机子运行批处理后,能够通过查询本机网卡物理地址,再与TXT中每行第一列对此,当相同时,将本机IP设置为那一行第二列的地址,计算机名设置为第三列的名字,我的批处理内容是:
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^|findstr /i /c:"physical address"') do (
for /f "tokens=1,2* delims= " %%m in (c:\min.txt) do (
if %%i==%%m netsh interface ip set address name=本地连接 source=static addr=%%n mask=255.255.255.0))
运行时总是有问题,后来发现第一个循环在获取本机网卡物理地址后会在最前面加一个空格然后才传给%%i,所以我将代码改为:
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^|findstr /i /c:"physical address"') do (
set a=%%i
set b=%a =%
for /f "tokens=1,2* delims= " %%m in (c:\min.txt) do (
if %b%==%%m netsh interface ip set address name=本地连接 source=static addr=%%n mask=255.255.255.0))
依然运行不成功
麻烦版主看一下,另外我还想改计算机名和工作组(组名为mshome),不知怎么实现,麻烦大家帮帮忙,万分感谢!
[ Last edited by xinjingdos on 2010-11-15 at 00:32 ]
我想实现的是每台机子运行批处理后,能够通过查询本机网卡物理地址,再与TXT中每行第一列对此,当相同时,将本机IP设置为那一行第二列的地址,计算机名设置为第三列的名字,我的批处理内容是:
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^|findstr /i /c:"physical address"') do (
for /f "tokens=1,2* delims= " %%m in (c:\min.txt) do (
if %%i==%%m netsh interface ip set address name=本地连接 source=static addr=%%n mask=255.255.255.0))
运行时总是有问题,后来发现第一个循环在获取本机网卡物理地址后会在最前面加一个空格然后才传给%%i,所以我将代码改为:
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^|findstr /i /c:"physical address"') do (
set a=%%i
set b=%a =%
for /f "tokens=1,2* delims= " %%m in (c:\min.txt) do (
if %b%==%%m netsh interface ip set address name=本地连接 source=static addr=%%n mask=255.255.255.0))
依然运行不成功
麻烦版主看一下,另外我还想改计算机名和工作组(组名为mshome),不知怎么实现,麻烦大家帮帮忙,万分感谢!
[ Last edited by xinjingdos on 2010-11-15 at 00:32 ]


