中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 05:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何读取文本每一行,且自动设定变量 查看 801 回复 4
楼 主 如何读取文本每一行,且自动设定变量 发表于 2009-01-19 22:15 ·  中国 上海 黄浦区 电信
初级用户
★★
积分 191
发帖 86
注册 2008-08-18 12:12
17年会员
UID 123477
性别 男
状态 离线
加入一个文本a.txt内容如下(已知文本行数小于等于26行)
CD
DIR
GET
……
设定变量%a%为CD %b%为DIR %c%为GET ……以此类推
如果只有3行,就只设%a%,%b%,%c%三个变量,不要多设.
请问如何实现,谢谢!

[ Last edited by wuhanbin on 2009-1-19 at 22:16 ]
2 发表于 2009-01-19 22:41 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
@echo off & setlocal enabledelayedexpansion
set Letters=abcdefghijklmnopqrstuvwxyz
for /f "delims=" %%a in (a.txt) do (
set One=!Letters:~,1!
set "!One!=%%a"
set Letters=!Letters:~1!
)
pause
3 发表于 2009-01-19 23:18 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@echo off&setlocal enabledelayedexpansion
set nn=0
set str=a b c d e f g h i j k l m n o p q r s t u v w x y z
for %%a in (%str%) do set /a nn+=1&set _!nn!=%%a
set nn=0
for /f %%a in (a.txt) do (call :sub&set !aa!=%%a)
for %%a in (%str%) do if not "!%%a!"=="" echo %%a=!%%a!
pause

:sub
set /a nn+=1
set aa=!_%nn%!
goto :eof

[ Last edited by netbenton on 2009-1-20 at 00:31 ]
精简
=> 个人网志
4 发表于 2009-01-20 00:05 ·  中国 上海 电信
初级用户
★★
积分 191
发帖 86
注册 2008-08-18 12:12
17年会员
UID 123477
性别 男
状态 离线
谢谢大家的帮助,netbenton的代码输出结果:
a=CD %b%
b=DIR %c%
c=GET %d%
如何才能把每行最后的%%去掉呢,谢谢!
5 发表于 2009-01-20 22:58 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
不好意思,是我看错了,已经改过来了.
不过2楼的更精练
精简
=> 个人网志
论坛跳转: