|
zeroflag
新手上路
积分 6
发帖 2
注册 2008-9-6
状态 离线
|
『楼 主』:
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 将十分感谢。
|
|
2008-9-6 15:03 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
2 楼』:
@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!
)
|
|
|
2008-9-6 15:20 |
|
|
zeroflag
新手上路
积分 6
发帖 2
注册 2008-9-6
状态 离线
|
『第
3 楼』:
Quote: | 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.
|
|
2008-9-6 18:57 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
|
2008-9-6 19:10 |
|
|