标题: [网络连接] [已解决]批处理怎样获取ipconfig命令语句的返回结果? [打印本页]
作者: zc584267913 时间: 2010-5-19 11:27 标题: [已解决]批处理怎样获取ipconfig命令语句的返回结果?
本帖最后由 pcl_test 于 2016-8-14 20:49 编辑
@echo off&setlocal enableextensions
for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&call set zc_%%bb%%=%%i&set zc_
请问为什么一定要用call set才能获取正确的值?而无法使用延迟变量来获取?
[ 本帖最后由 zc584267913 于 2010-5-19 14:30 编辑 ]
作者: hanyeguxing 时间: 2010-5-19 12:34
原帖由 zc584267913 于 2010-5-19 11:27 发表
@echo off&setlocal enableextensions
for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&call set zc_%%bb%%=%%i&set zc_
请问为什么一定要用call set才能获取正确的值?而无法使用延迟变量来获取?
1,可以使用变量延迟
2,你的脚本错误在于setlocal enabledelayedexpansion打错了。
正确写法:- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&set zc_!bb!=%%i
- set zc_
- pause
复制代码
或:- @echo off
- for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&call set zc_%%bb%%=%%i
- set zc_
- pause
复制代码
set zc_不要和for在一行,如果想要放一行,需要这样写:- @echo off&setlocal enabledelayedexpansion
- (for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&set zc_!bb!=%%i)&set zc_
- pause
复制代码
或:- @echo off
- (for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&call set zc_%%bb%%=%%i)&set zc_
- pause
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-19 12:38 编辑 ]
作者: sgaizxt001 时间: 2010-5-19 20:49
setlocal enableextensions的写法有什么不同吗?我看别人的代码有这样写的。比如:- @echo off & setlocal ENABLEEXTENSIONS
- set "first="
- for /f "delims=" %%a in ('more ^< numbers.txt') do (
- if not defined first set first=%%a
- )
- echo/%first%
复制代码
作者: hanyeguxing 时间: 2010-5-19 21:12
setlocal enableextensions是启用命令扩展
setlocal enabledelayedexpansion是启用变量延迟
作者: sgaizxt001 时间: 2010-5-19 21:38
我去看看命令扩展是什么意思
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |