Board logo

标题: 延时变量的问题 [打印本页]

作者: jun19841     时间: 2010-12-6 14:46    标题: 延时变量的问题

@echo off&setlocal enabledelayedexpansion
for /f "usebackq tokens=2 delims=:" %%i in (`ipconfig ^| find "Default Gateway"`) do set gw=%%i
for /f "usebackq tokens=2 delims= " %%i in (`arp -a ^| findstr "\<!gw!\>"`) do echo %%i
pause


为什么在findstr  "\<10.0.0.1\>"`
则可以获取到网关的MAC地址
而用延时变量 !gw! 就无法获取

[ Last edited by jun19841 on 2010-12-6 at 14:58 ]
作者: Hanyeguxing     时间: 2010-12-6 15:12
看我这里http://www.cn-dos.net/forum/viewthread.php?tid=52933&fpage=2
11楼的说明!~
是你在set gw=%%i就已经把空格带进去了
结果就是“空格+Default Gateway”
正确应该这样写:
@echo off
for /f "tokens=2 delims=:" %%i in (`ipconfig ^| find "Default Gateway"`) do set gw=%%i
for /f "tokens=2 delims= " %%i in (`arp -a ^| findstr "\<%gw:~1%\>"`) do echo %%i
pause
%gw:~1%用于把最前面带进去的空格去掉

[ Last edited by Hanyeguxing on 2010-12-6 at 15:16 ]
作者: jun19841     时间: 2010-12-6 15:20
感谢 Hanyeguxing指点,学习了~
作者: jun19841     时间: 2010-12-6 15:21


  Quote:
Originally posted by Hanyeguxing at 2010-12-6 15:12:
看我这里http://www.cn-dos.net/forum/viewthread.php?tid=52933&fpage=2
11楼的说明!~
是你在set gw=%%i就已经把空格带进去了
结果就是“空格+Default Gateway ...

嗯,插入call  也可以调用,学习了~
作者: jun19841     时间: 2010-12-6 15:24
for /f "usebackq tokens=2 delims= " %%i in (`arp -a ^| findstr "\<call !gw!\>"`) do echo %%i
for /f "usebackq tokens=2 delims= " %%i in (`arp -a ^| findstr "\<!gw:~1!\>"`) do echo %%i
作者: acaigg     时间: 2010-12-25 12:31
学习一下。