中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-18 08:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]读取文件内容到数组,这后输出的问题? 查看 1,230 回复 6
楼 主 [已结]读取文件内容到数组,这后输出的问题? 发表于 2007-11-08 08:06 ·  中国 辽宁 本溪 联通
初级用户
积分 28
发帖 11
注册 2007-11-07 17:52
UID 101992
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%i in (1.txt) do (
set a%n%=%%i
echo a!n!=!a%n%!
set /a n+=1
)
echo.
echo 从上面可以看到已经读装进数组,但是下面输出会出错(不知道该怎么改?)
echo.
for /l %%j in (0,1,!n!) do echo !a%%j!
pause

上面的代码不知道错在哪里,“echo !a%%j!”这句总是提示错误...

[ Last edited by bxdonne on 2007-11-8 at 03:39 PM ]
2 发表于 2007-11-08 08:58 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
set a%n%=%%i ‘在这里,没用!,所以n变量一直为0
echo a!n!=!a%n%! ’这里也有同样的问题
3 发表于 2007-11-08 10:00 ·  中国 辽宁 本溪 联通
初级用户
积分 28
发帖 11
注册 2007-11-07 17:52
UID 101992
性别 男
状态 离线
那应该怎么改啊?谢谢!
4 发表于 2007-11-08 10:23 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "delims=" %%i in (1.txt) do (
set a!n!=%%i
call echo.a!n!=%%a!n!%%
set /a n+=1
)
echo.
::echo 从上面可以看到已经读装进数组,但是下面输出会出错(不知道该怎么改?)
echo.
for /l %%j in (0,1,%n%) do echo.!a%%j!
pause


是要这个结果吗??
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
bxdonne +1 2007-11-08 10:26
cold1 +1 2010-11-27 18:36
5 发表于 2007-11-08 10:29 ·  中国 辽宁 本溪 联通
初级用户
积分 28
发帖 11
注册 2007-11-07 17:52
UID 101992
性别 男
状态 离线
是我想要的结果!高人啊,谢谢!
可有几个地方不明白,帮解释一下

call echo.a!n!=%%a!n!%%和call echo a!n!=%%a!n!%%(一点之差有什么不一样?)
还有为什么要写成%%a!n!%%?而不是!a%n%!?
6 发表于 2007-11-08 10:42 ·  中国 香港 腾讯云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
那个点的作用就是,如果后面的变量为空的话,就输入空行,没有这个点,就会输出“ECHO 处于关闭状态”。

如果是!a%n%!的话,%n%变量就没有被延迟了,还是一直等于0.
7 发表于 2010-11-27 18:14 ·  中国 福建 南平 电信
新手上路
积分 3
发帖 2
注册 2007-04-01 03:30
UID 83566
性别 男
状态 离线
谢谢abcd,这个问题困惑我几天了。
论坛跳转: