中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 12:35
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,254 会员排行
DOS批处理 & 脚本技术(批处理室) » [搞定了]变量无法赋值成功,救救我啊。在线等
可打印版本  779 / 7
第1楼 ccily2701 发表于 2008-08-15 12:50
初级用户 发帖 45 积分 80 来自 jiangxi
[搞定了]变量无法赋值成功,救救我啊。在线等
@echo off
for /f %%c in (aa.txt) do (
set b=%%c
echo %b%
)
pause

aa.txt 内容:
aaldk
fff
ss
flk



为什么输出结果是 echo 关闭状态
我也试过 echo %%b等,都没有用啊。。。谁能告诉我啊。

[ Last edited by ccily2701 on 2008-8-22 at 12:07 PM ]
第2楼 moniuming 发表于 2008-08-15 13:12
银牌会员 发帖 574 积分 1,335 来自 广西
变量延迟
@echo off
for %%c in (aa.txt) do (
set b=%%c
call echo %%b%%
)
pause
第3楼 ccily2701 发表于 2008-08-15 13:42
初级用户 发帖 45 积分 80 来自 jiangxi
很感谢你。。。我试过了。。可以。。
不过少了一个/f的参数

能不能请问一下为什么什么出现这种情况,什么变量延时?

[ Last edited by ccily2701 on 2008-8-15 at 01:43 PM ]
第4楼 moniuming 发表于 2008-08-15 14:15
银牌会员 发帖 574 积分 1,335 来自 广西
set /?

set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

原因是,它不会在目前的目录中建立一个文件列表,而只是将
LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在
FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量
是空的。因此,我们真正执行的 FOR 循环是:

for %i in (*) do set LIST= %i

这个循环继续将 LIST 设成找到的最后一个文件。

延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行
时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面
例子写成以下所示,以达到预期效果:

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%


[ Last edited by moniuming on 2008-8-15 at 02:23 PM ]
第5楼 ccily2701 发表于 2008-08-17 12:26
初级用户 发帖 45 积分 80 来自 jiangxi
for 少了/f的参数
第6楼 HAT 发表于 2008-08-17 12:53
版主 发帖 5,017 积分 9,023

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

什么情况下该使用变量延迟?
http://www.cn-dos.net/forum/viewthread.php?tid=20733&fpage=6
第7楼 moniuming 发表于 2008-08-17 12:54
银牌会员 发帖 574 积分 1,335 来自 广西

第8楼 ccily2701 发表于 2008-08-22 12:06
初级用户 发帖 45 积分 80 来自 jiangxi
谢谢大家的热心帮忙
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023