中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于"sed"命令合并文本文件上下行的问题
« [1] [2] [3] »
作者:
标题: 关于"sed"命令合并文本文件上下行的问题 上一主题 | 下一主题
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 31 楼』:  

我是使用的中文XP,

chcp 437>nul & graftabl 936>nul  加上这句,

新生成的文本中开头还是有29搂那段说明文字

不支持长文件名这个问题应该是我误解了。

还有,听说change 命令是支持处理子目录中的文件的,

下面这段应该怎么修改才能同时处理所在目录下的包括子目录中的所有文本呢?

能直接修改原文件就可以,

在处理之前我就把这些文件全部拷贝到一个目录下的多个目录中。

(不能全部都放在同一个目录下,因为大量的文件名称是重复的)

chcp 437>nul & graftabl 936>nul
for %%a in ("*.txt") do (
  change "%%a" /from "&H0D7C" /to "&H7C"
  sed "/^$/d" "%%a"|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"
)

[ Last edited by youaoyi on 2008-8-17 at 11:03 PM ]

2008-8-17 22:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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


@echo off
set SrcFolder=C:\test
for /f "tokens=*" %%a in ('dir /s /b "*.txt"') do (
  change "%%a" /from "&H0D7C" /to "&H7C"
  sed "/^$/d" "%%a"|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"
)




2008-8-18 10:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 33 楼』:  

这样执行后,只能输出到屏幕显示啊? 原文件的内容依然带有乱字符.

批量处理该如何添加象">"这样的输出符呢?  不好意思,我是新手...

2008-8-18 12:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

change.exe本来就是修改原文件的啊,不用重定向输出。
@echo off
set SrcFolder=C:\test
for /f "tokens=*" %%a in ('dir /s /b "%SrcFolder%\*.txt"') do (
  change "%%a" /from "&H0D7C" /to "&H7C"
  sed "/^$/d" "%%a"|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D">>"%%~na.new"
)
for /f "tokens=*" %%a in ('dir /s /b "%SrcFolder%\*.new"') do (
  ren "%%a" "%%~na.txt"
)




2008-8-18 13:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 35 楼』:  

反复用下面的程式进行测试

chcp 437>nul & graftabl 936>nul
for %%a in ("*.txt") do (
  change "%%a" /from "&H0D7C" /to "&H7C"
)
pause

虽然说能执行,但是实际上无法替换文本中的 0D7C 字段,

原文本用UT打开还是能查看到 0D7C 字段.

难道是第二个下载点的 change.exe 版本不行 ?

另外34楼的程式好像有问题,生成的新文本,连文本应该存在的分行都消失了.

[ Last edited by youaoyi on 2008-8-18 at 02:43 PM ]

2008-8-18 14:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

不支持长文件名,就用短文件名吧:
@echo off
set SrcFolder=C:\test
for /f "tokens=*" %%a in ('dir /s /b "%SrcFolder%\*.txt"') do (
  change "%%~sfa" /from "&H0D7C" /to "&H7C"
  sed "/^$/d" "%%a"|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"
)




2008-8-18 14:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 37 楼』:  

好的  原来自己被文件名的长短给折腾了

非常感谢 HAT 的帮助 ,谢谢谢谢!

2008-8-18 15:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: