中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » DOS/for中循环变量向其他变量赋值失败,何故?
作者:
标题: DOS/for中循环变量向其他变量赋值失败,何故? 上一主题 | 下一主题
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
状态 离线
『第 4 楼』:  

变量延迟详解
http://www.cn-dos.net/forum/viewthread.php?tid=28273

什么情况下该使用变量延迟?
http://www.cn-dos.net/forum/viewthread.php?tid=20733



2008-9-6 19:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: