中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 22:28
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于 把文本按行横列变纵列 的问题 查看 1,242 回复 10
楼 主 关于 把文本按行横列变纵列 的问题 发表于 2009-12-18 22:22 ·  中国 四川 广元 联通
高级用户
★★★
积分 609
发帖 374
注册 2006-08-02 22:38
20年会员
UID 59720
状态 离线
我现在想编辑个批处理,关于任意十六进制码解密(无地址码、无长度)现在将需要处理的文件作为附件传上。
例如:
40 65 63 68 6F 20 6F 66 66 26 65 6E 64 6C 6F 63 61 6C 26 73 65 74 6C 6F 63 61 6C 20 65 6E 61 62 6C 65 64 65 6C 61 79 65 64 65 78 70 61 6E 73 69 6F 6E 0D 0A 3A 3A 20 43 6F 64 65 20 62 79 2D 71 38 32 34 39 30 31 34 20 43 4D 44 40 58 50 20 45 78 65 32 42 61 74 2E 63 6D 64 0D 0A 73 65 74 20 2F 61 20 22 63 6F 75 6E 74 3D 30 2C 73 74 72 3D 32 34 30 2C 76 61 72 3D 25 72 61 6E 64 6F 6D 25 25 25 31 30 22 0D 0A 73 65 74 20 22 68 78 3D 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 22 0D 0A 32 3E 6E 75 6C 20 64 65 6C 20 2F 61 20 2F 71 20 2F 66 20 63 6D 70 5F 2E 70 73 0D 0A 73 65 74 20 2F 70 20 66 69 6C 65 3D C7 EB CA E4 C8 EB CE C4 BC FE B5 C4 BE F8 B6 D4 C2 B7 BE B6 20 5B BD A8 D2 E9 D6 B1 BD D3 BD AB CE C4 BC FE CD CF B7 C5 B5 BD B4 CB B4 B0 BF DA D6 D0 A3 AC D7 EE B4 F3 20 36 35 32 38 30 20 D7 D6 BD DA 5D 3A 26 63 6C 73 0D 0A 73 65 74 20 22 66 69 6C 65 3D 21 66 69 6C 65 3A 22 3D 21 22 0D 0A 66 6F 72 20 25 25 69 20 69 6E 20 28 22 21 66 69 6C 65 21 22 29 20 64 6F 20 28 69 66 20 6E 6F 74 20 65 78 69 73 74 20 22 25 25 7E 24 50 41 54 48 3A 69 2E 5C 2A 22 20 28 0D 0A 20 20 20 20 20 20 20 73 65 74 20 22 65 78 70 6E 61 6D 65 3D 25 25 7E 78 69 22 26 73 65 74 20 2F 61 20 22 73 69 7A 65 3D 25 25 7E 7A 69 2D 31 22 29 29 0D 0A 69 66 20 6E 6F 74 20 64 65 66 69 6E 65 64 20 73 69 7A 65 20 65 63 68 6F 2E CA E4 C8 EB B4 ED CE F3 A3 BF 26 26 25 30 0D 0A 69 66 20 25 73 69 7A 65 25 20 4E 45 51 20 2D 31 20 28 69 66 20 36 35 32 37 39 20 4C 53 53 20 25 73 69 7A 65 25 20 65 63 68 6F 2E CE C4 BC FE CC AB B4 F3 C1 CB A3 A1 26 25 30 29 20 65 6C 73 65 20 28 65 63 68 6F 2E 30 20 D7 D6 BD DA A3 BF 26 25 30 29 0D 0A 3E 6E 75 6C 20 66 73 75 74 69 6C 20 66 69 6C 65 20 63 72 65 61 74 65 6E 65 77 20 22 25 7E 64 70 30 63 6D 70 5F 2E 70 73 22 20 25 73 69 7A 65 25 0D 0A 3E 3E 22 25 7E 64 70 30 63 6D 70 5F 2E 70 73 22 20 3C 6E 75 6C 20 73 65 74 2F 70 22 3D 25 76 61 72 25 22 0D 0A 28 65 63 68 6F 2E 40 65 63 68 6F 20 6F 66 66 0D 0A 65 63 68 6F 2E 5E 3E 6E 75 6C 20 63 68 63 70 20 34 33 37 5E 26 5E 3E 6E 75 6C 20 67 72 61 66 74 61 62 6C 20 39 33 36 0D 0A 65 63 68 6F 2E 6D 6F 72 65 20 2B 36 20 25 25 30 5E 7C 64 65 62 75 67 0D 0A 65 63 68 6F 2E 32 5E 3E 6E 75 6C 20 64 65 6C 20 2F 61 20 2F 66 20 6E 65 77 5F 25 65 78 70 6E 61 6D 65 25 5E 26 72 65 6E 20 74 6D 70 5F 20 6E 65 77 5F 25 65 78 70 6E 61 6D 65 25 0D 0A
........
...........

本来程序已经编辑成功,已经可以处理7K左右小型文件.文件大到8K~几十K就不能处理了.关键问题是把文本按行横列变纵列不能处理大文件.
这是我用到的命令:
@echo off
setlocal enabledelayedexpansion
cd.>b.txt
for /f "tokens=*" %%i in (a.txt) do (
set str=%%i
set str=!str: =!
call :lp
)
pause
:lp
echo !str:~0,2!>>b.txt&set str=!str:~2!&if defined str goto :lp&goto :eof

希望朋友帮助解决处理 附件 内容可以变成纵列
即:
40
65
63
68
6F
20
6F
66
66
0D
0A
73
65
74
2F
70
20
66
69
6C
65
3D
.
.
.
.
附件
shm.rar (1.52 KiB, 下载附件所需积分 1 点, 下载次数: 10)
2 发表于 2009-12-19 00:07 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
是这个意思么?

sed "s/ /\n/g" a.txt
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
Hanyeguxing +4 2009-12-19 00:38
3 发表于 2009-12-19 00:38 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
这样的问题,用sed或fr等,才是王道。。。
4 发表于 2009-12-19 13:47 ·  中国 四川 广元 联通
高级用户
★★★
积分 609
发帖 374
注册 2006-08-02 22:38
20年会员
UID 59720
状态 离线
我不会用 sed "s/ /\n/g" a.txt这个代码啊
帮我写个全的吧!先谢谢了!!

[ Last edited by ZJHJ on 2009-12-19 at 14:06 ]
5 发表于 2009-12-19 13:58 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
sed和fr是第三方命令行工具,你在论坛内搜索并下载,里面有帮助。
他们都可以直接实现替换“空格”为“回车符+换行符”。
6 发表于 2009-12-19 14:14 ·  中国 四川 广元 联通
高级用户
★★★
积分 609
发帖 374
注册 2006-08-02 22:38
20年会员
UID 59720
状态 离线
原来是第三方命令行工具,谢谢了
7 发表于 2009-12-19 14:40 ·  中国 四川 广元 联通
高级用户
★★★
积分 609
发帖 374
注册 2006-08-02 22:38
20年会员
UID 59720
状态 离线
刚才下载了,处理非常快。谢谢二位支持!
任意大小的十六进制码解密(无地址码、无长度)可算完美解决。

我的本意.....用十六进制码加密文件,不提供地址码、长度码, 只有十六进制码,如附件
文件,要解密就不是一件容易的事了.附件是批处理代码,有兴趣的朋友可解密贴出.

[ Last edited by ZJHJ on 2009-12-20 at 17:23 ]
附件
shm.rar (1.29 KiB, 下载次数: 3)
8 发表于 2009-12-22 09:48 ·  中国 北京 中电华通通信有限公司
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
18年会员
UID 116706
性别 男
状态 离线
9 发表于 2009-12-27 06:52 ·  中国 福建 龙岩 电信
初级用户
积分 30
发帖 15
注册 2008-06-23 23:11
18年会员
UID 120750
性别 男
状态 离线
还是用工具好

[ Last edited by ficn on 2009-12-27 at 06:56 ]
10 我还是来纯批的,效率大家看吧: 发表于 2010-01-08 14:57 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do (
set /a n=0
for %%b in (%%a) do (
set /a n+=1
for %%c in (!n!) do set "_%%c=!_%%c! %%b"
)
)
(for /l %%a in (1,1,%n%) do echo !_%%a:~1!)>list.txt
start list.txt


[ Last edited by bat-zw on 2010-1-8 at 14:59 ]
批处理之家新域名:www.bathome.net
11 发表于 2010-01-09 19:32 ·  中国 四川 广元 联通
高级用户
★★★
积分 609
发帖 374
注册 2006-08-02 22:38
20年会员
UID 59720
状态 离线
1 文件大了就不行了。
2 效率太慢
论坛跳转: