[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 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打错了。
正确写法:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&set zc_!bb!=%%i
  3. set zc_
  4. pause
复制代码
或:
  1. @echo off
  2. for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&call set zc_%%bb%%=%%i
  3. set zc_
  4. pause
复制代码
set zc_不要和for在一行,如果想要放一行,需要这样写:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&set zc_!bb!=%%i)&set zc_
  3. pause
复制代码
或:
  1. @echo off
  2. (for /f "tokens=3*" %%i in ('ipconfig^|find /i "Ethernet adapter"') do set/a bb+=1&call set zc_%%bb%%=%%i)&set zc_
  3. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-19 12:38 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

setlocal enableextensions是启用命令扩展
setlocal enabledelayedexpansion是启用变量延迟
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表