Board logo

标题: [文本处理] 批处理获取网关ip并绑定mac地址,如何调用for的参数值 [打印本页]

作者: sk007    时间: 2017-8-6 14:49     标题: 批处理获取网关ip并绑定mac地址,如何调用for的参数值

本帖最后由 pcl_test 于 2017-8-7 21:30 编辑

请教高手高高手,用for来自动识别并绑定网关,不会调用
arp -d
for /f "tokens=1,2 delims= " %%a in ('arp -a ^|find "动态"') do echo %%a %%b
这句没有问题
for /f "tokens=2 delims=: " %%i in ('netsh interface ipv4 show neighbors ^|find "本地连接"') do (
netsh interface ipv4 add neighbors "%%i" "%%a" "%%b"
)
想在第二次for中调用第一次的红色结果,请教大神怎么做????
作者: 523066680    时间: 2017-8-6 18:51

第一个 for .... do (
set VAR1="%%a”
set VAR2="%%b"
)

第二个 for 中改为 netsh interface ipv4 add neighbors "%%i" %VAR1% %VAR2%
作者: sk007    时间: 2017-8-6 21:09

按照这样改过,参数还是没有传递过来??是我哪里输错了吗?
作者: 523066680    时间: 2017-8-6 22:04

第二个for
%VAR1% %VAR2%
而不是
VAR1 VAR2
作者: 老刘1号    时间: 2017-8-6 23:26

  1. arp -d
  2. for /f "tokens=1,2 delims= " %%a in ('arp -a ^|find "动态"') do ^
  3. for /f "tokens=2 delims=: " %%i in (
  4. 'netsh interface ipv4 show neighbors ^|find "本地连接"'
  5. ) do netsh interface ipv4 add neighbors "%%i" "%%a" "%%b"
复制代码

作者: sk007    时间: 2017-8-7 08:54

回复 4# 523066680
用了%VAR1%,返出的值为空
作者: 523066680    时间: 2017-8-7 10:03

哦,请忽略我的方案. 参考5楼
作者: sk007    时间: 2017-8-7 10:17

回复 5# 老刘1号
也是一闪而过,arp -a结果网关还是动态
应该是静态了才对
作者: huyou96    时间: 2017-8-7 14:34

不太明白你所言自动识别并绑定网关是要咋样做?

发帖时其实要不厌其繁,说的越唠叨越详尽就越好,人家别人就越明白你的意思。

我这里给出一个直接在命令行ping默认网关的实例如下:
  1. for /f "delims={}" %g in ('wmic nicconfig get DefaultIPGateway ^| findstr [0-9]') do ping %~g
复制代码
如果想要在批处理文件里用这句指令,就要用到双百分号,就是说头个百分号是做转义字符用的,可用记事本将之存盘为 PingDefaultGateway.bat 文件,示例如下:
  1. for /f "delims={}" %%g in ('wmic nicconfig get DefaultIPGateway ^| findstr [0-9]') do ping %%~g%
复制代码
不知你所说的“网关”是否指的是这个默认网关?不知我上面给的ping默认网关的示例是否能给你些帮助或启示?能够直接改改就能供你使用了?祝好运伴你!
作者: sk007    时间: 2017-8-7 19:48

本帖最后由 sk007 于 2017-8-7 19:50 编辑

是的是默认网关,我以后发求助贴时会注意语句的详细。
谢谢各位给我的解答,原来是批处理中第二个for得不到第一个for中传递是因为用了arp -d删除了,所以arp -a中的值为空,后来加上一个延时的语句,等到arp-a有值就可以了,非常感谢各位的热心帮助。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2