中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-22 11:27
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for中不能引用自定义变量? 查看 820 回复 3
楼 主 for中不能引用自定义变量? 发表于 2007-06-14 11:41 ·  中国 陕西 西安 电信
初级用户
积分 30
发帖 10
注册 2007-06-14 11:05
19年会员
UID 91274
性别 男
状态 离线
for变量的值能否赋给自定义的变量?
我尝试下面的程序
for /f %%a in (tmp.txt) do a(
echo %%a
set m=%%a
echo %m%
)
貌似我怎么搞都不行啊?
其实我是想把从文件中取出来的每行字符串,取其后5个显示,可是怎么都弄不好~~~

[ Last edited by bjsh on 2007-7-31 at 02:57 PM ]
2 发表于 2007-06-14 11:47 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
可以的

你的问题是没有启用延迟环境变量

for /f %%a in (tmp.txt) do (
echo %%a
set m=%%a
call echo %%m%%
)


或者
setlocal enabledelayedexpansion
for /f %%a in (tmp.txt) do (
echo %%a
set m=%%a
echo !m!
)


根据楼主的意思,应该这样提取:
setlocal enabledelayedexpansion
for /f "delims=" %%a in (tmp.txt) do (
echo %%a
set m=%%a
echo !m:~-5!
)


[ Last edited by wudixin96 on 2007-6-14 at 11:52 AM ]
3 发表于 2007-06-14 12:09 ·  中国 陕西 西安 电信
初级用户
积分 30
发帖 10
注册 2007-06-14 11:05
19年会员
UID 91274
性别 男
状态 离线
我狂晕!!!!前面是加了setlocal的
只有最后一步的echo !m:~-5! 我用的不是!是%结果搞了一早上!!!
郁闷啊~~~~~~
多谢老大~
4 发表于 2007-06-14 14:30 ·  中国 河北 石家庄 北京神州长城通信技术发展中心中国长城互联网
初级用户
★★
积分 152
发帖 75
注册 2007-02-06 22:09
19年会员
UID 78805
性别 男
状态 离线
呵呵,我也在这个问题上烦了好久。后来看到版内一个讲变量延迟的精华贴才恍然大悟。
论坛跳转: