[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理获取网关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中调用第一次的红色结果,请教大神怎么做????

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

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

TOP

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

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

我这里给出一个直接在命令行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默认网关的示例是否能给你些帮助或启示?能够直接改改就能供你使用了?祝好运伴你!

TOP

回复 5# 老刘1号
也是一闪而过,arp -a结果网关还是动态
应该是静态了才对

TOP

哦,请忽略我的方案. 参考5楼

TOP

回复 4# 523066680
用了%VAR1%,返出的值为空

TOP

  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"
复制代码

TOP

第二个for
%VAR1% %VAR2%
而不是
VAR1 VAR2

TOP

按照这样改过,参数还是没有传递过来??是我哪里输错了吗?

TOP

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

第二个 for 中改为 netsh interface ipv4 add neighbors "%%i" %VAR1% %VAR2%

TOP

返回列表