中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 20:30
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何从文本提取中每行的部分代码,并分别设置为变量 查看 1,354 回复 7
楼 主 如何从文本提取中每行的部分代码,并分别设置为变量 发表于 2006-12-18 09:27 ·  中国 上海 东方有线
初级用户
积分 42
发帖 15
注册 2006-05-11 13:15
20年会员
UID 55327
状态 离线
文本 1.txt 内容

"gl3Gy2hUKeS.9qdcjg_WtA--.chatCategories"=dword:45836378
"AhUunOLNkbj5gjiC9Cr57Q--.chatCategories"=dword:457707ca
"gl3Gy2thKeS.9qdcjg_WtA--.chatCategories"=dword:45836378
.
.
.
"AhUunOfffbj5gjiC9Cr57Q--.chatCategories"=dword:457707ca

说明:文本内行数不固定 ,一般<6 行

问题:如何将每行中 =号左边引号内的全部代码分别设置为变量? 即 变量1,变量2.....变量5

完整的批处理文件应该这样写?请各位指导,谢谢!

[ Last edited by qq11211 on 2006-12-18 at 10:58 AM ]
2 发表于 2006-12-18 09:42 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
for /f
3 发表于 2006-12-18 10:54 ·  中国 上海 东方有线
初级用户
积分 42
发帖 15
注册 2006-05-11 13:15
20年会员
UID 55327
状态 离线
Originally posted by vkill at 2006-12-18 09:42:
for /f


这样也行?
4 发表于 2006-12-18 13:08 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  演示代码如下:

@echo off
set num=0
for /f "delims==" %%i in (test.txt) do call :set_var %%i
pause
goto :eof

:set_var
set var=%1
set "var=%var:~1,-1%"
set /a num+=1
echo "var%num%=%var%"
goto :eof
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
qq11211 +2 2006-12-19 13:08
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2006-12-18 23:29 ·  中国 上海 东方有线
初级用户
积分 42
发帖 15
注册 2006-05-11 13:15
20年会员
UID 55327
状态 离线
首先感谢版主指导,谢谢!运行的结果不对,我在重新叙述一下

文本test.txt 内容

"gl3Gy2hUKeS.9qdcjg_WtA--.chatCategories"=dword:45836378
"AhUunOLNkbj5gjiC9Cr57Q--.chatCategories"=dword:457707ca
"gl3Gy2thKeSr9qdcjg_WtA--.chatCategories"=dword:458363ss
"AhUunOfffbj5gjiC9Cgr57Q--.chatCategories"=dword:457707gh
"..........."
说明:文本内行数不固定 ,一般<6 行

问题:如何将每行中“ =”号左边引号内的全部代码 分别 赋值到变量1,变量2,变量3,变量n?

运行批处理文件后,最后的结果是

%变量1%=gl3Gy2hUKeS.9qdcjg_WtA--.chatCategories
%变量2%=AhUunOLNkbj5gjiC9Cr57Q--.chatCategories
%变量3%=gl3Gy2thKeSr9qdcjg_WtA--.chatCategories
%变量4%=AUunOfffbj5gbjiC9Cgr57Q--.chatCategories
%变量n%=n.........

查看变量的结果是

echo %变量1% > test2.txt
echo %变量2% >> test2.txt
echo %变量3% >> test2.txt
echo %变量4% >> test2.txt
echo %变量n% >> test2.txt

test2.txt 的内容

gl3Gy2hUKeS.9qdcjg_WtA--.chatCategories
AhUunOLNkbj5gjiC9Cr57Q--.chatCategories
gl3Gy2thKeSr9qdcjg_WtA--.chatCategories
AUunOfffbj5gbjiC9Cgr57Q--.chatCategories
n.........

[ Last edited by qq11211 on 2006-12-19 at 12:10 AM ]
6 发表于 2006-12-18 23:41 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
for /f "delims==" %a in (test.txt) do echo %~a >>test2.txt
我今后在论坛的目标就是做个超级坏人!!!
7 发表于 2006-12-19 00:29 ·  中国 上海 东方有线
初级用户
积分 42
发帖 15
注册 2006-05-11 13:15
20年会员
UID 55327
状态 离线
Originally posted by 9527 at 2006-12-18 23:41:
for /f "delims==" %a in (test.txt) do echo %~a >>test2.txt


谢谢你 能不能告诉我怎么看到我需要的 %变量 %
8 发表于 2006-12-19 02:56 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  怎么会不对呢?难道是屏幕显示的时候首尾带了引号么?那是我为了兼容特殊字符特意加上的,如果你文本里面等号左边没有特殊字符的话(具体是连接符号和管道符号),完全可以去掉 echo "var%num%=%var%" 语句中的所有引号啊。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
论坛跳转: