Board logo

标题: DOS/for中循环变量向其他变量赋值失败,何故? [打印本页]

作者: zeroflag     时间: 2008-9-6 15:03    标题: DOS/for中循环变量向其他变量赋值失败,何故?
设有文件my.txt,内容为: ------------------------------------------------ sys,svr1,.baidu.com,note1 sys,svr2,.yahoo.com.cn,note2 . . . . . . ------------------------------------------------ 想用DOS批处理for读出每行各项,并赋值给其他变量,但失败,详见如下: for /f "usebackq tokens=1,2,3,4 delims=," %%i in ("my.txt") do ( rem 此行正确执行,显示: echo i=%%i, j=%%j, k=%%k, l=%%l rem 但下述:循环变量(%%i,%%j)对其他变量(%fullsvrname%, rem %tmp_i%等)赋值均失败(并无任何错误显示,只是echo变量, rem 全为空): set fullsvrname=%%j%%k set tmp_i=%%i set tmp_j=%%j rem 显示"空" echo fullsvrname=%fullsvrname% echo tmp_i=%tmp_i%, tmp_j=%tmp_j% ) 为何如此?有什么办法可以实现赋值? ----- 如能回答回复至:zeroflag@msn.com 将十分感谢。

作者: HAT     时间: 2008-9-6 15:20
@echo off
setlocal enabledelayedexpansion
for /f "usebackq tokens=1,2,3,4 delims=," %%i in ("my.txt") do (
  echo i=%%i, j=%%j, k=%%k, l=%%l
  set fullsvrname=%%j%%k
  set tmp_i=%%i
  set tmp_j=%%j
  echo fullsvrname=!fullsvrname!
  echo tmp_i=!tmp_i!,  tmp_j=!tmp_j!
)

作者: zeroflag     时间: 2008-9-6 18:57
Originally posted by HAT at 2008/9/6 04:20 PM: [code]@echo off setlocal enabledelayedexpansion for /f "usebackq tokens=1,2,3,4 delims=," %%i in ("my.txt") do ( echo i=%%i, j=%%j, k=%%k, l=%%l set fullsvrname=%%j%%k ...
太棒了,多谢。 可否对setlocal enabledelayedexpansion和有关 !var!形式 变量再给多些描述说明,或给个 URL LINK.

作者: HAT     时间: 2008-9-6 19:10
变量延迟详解 www.cn-dos.net/forum/viewthrea ... 什么情况下该使用变量延迟? www.cn-dos.net/forum/viewthrea ...