中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于 把文本按行横列变纵列 的问题
作者:
标题: 关于 把文本按行横列变纵列 的问题 上一主题 | 下一主题
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『楼 主』:  关于 把文本按行横列变纵列 的问题

我现在想编辑个批处理,关于任意十六进制码解密(无地址码、无长度)现在将需要处理的文件作为附件传上。
例如:
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
.
.
.
.

附件 1: shm.rar (2009-12-18 22:31, 1.52 K, 下载附件所需积分 1 点 ,下载次数: 10)
2009-12-18 22:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

是这个意思么?
sed "s/ /\n/g" a.txt


   此帖被 +4 点积分        点击查看详情   
评分人:【 Hanyeguxing 分数: +4  时间:2009-12-19 00:38




2009-12-19 00:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  

这样的问题,用sed或fr等,才是王道。。。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-19 00:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 4 楼』:  

我不会用 sed "s/ /\n/g" a.txt这个代码啊
帮我写个全的吧!先谢谢了!!

[ Last edited by ZJHJ on 2009-12-19 at 14:06 ]

2009-12-19 13:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 5 楼』:  

sed和fr是第三方命令行工具,你在论坛内搜索并下载,里面有帮助。
他们都可以直接实现替换“空格”为“回车符+换行符”。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-19 13:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 6 楼』:  

原来是第三方命令行工具,谢谢了

2009-12-19 14:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 7 楼』:  

刚才下载了,处理非常快。谢谢二位支持!
任意大小的十六进制码解密(无地址码、无长度)可算完美解决。

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

[ Last edited by ZJHJ on 2009-12-20 at 17:23 ]

附件 1: shm.rar (2009-12-20 17:18, 1.29 K,下载次数: 3)
2009-12-19 14:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 8 楼』:  

我还以为是这种呢。。。。

http://www.google.cn/ig/ifr?pid= ... tp://www.cn-dos.net



┏━━━━━━┓
┃据说是李先生┃
┠──────┨
┃*ntRSS┃
┗━━━━━━┛
2009-12-22 09:48
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
ficn
初级用户





积分 30
发帖 15
注册 2008-6-23
状态 离线
『第 9 楼』:  

还是用工具好

[ Last edited by ficn on 2009-12-27 at 06:56 ]

2009-12-27 06:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  我还是来纯批的,效率大家看吧:


@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
2010-1-8 14:57
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 11 楼』:  

1 文件大了就不行了。
2 效率太慢

2010-1-9 19:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: