中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-21 05:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于"sed"命令合并文本文件上下行的问题 查看 2,492 回复 36
31 发表于 2008-08-17 22:56 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
我是使用的中文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 ]
32 发表于 2008-08-18 10:00 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@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"
)
33 发表于 2008-08-18 12:14 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
这样执行后,只能输出到屏幕显示啊? 原文件的内容依然带有乱字符.

批量处理该如何添加象">"这样的输出符呢? 不好意思,我是新手...
34 发表于 2008-08-18 13:35 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
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"
)
35 发表于 2008-08-18 14:28 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
反复用下面的程式进行测试

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 ]
36 发表于 2008-08-18 14:44 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
不支持长文件名,就用短文件名吧:
@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"
)
37 发表于 2008-08-18 15:31 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
好的 原来自己被文件名的长短给折腾了

非常感谢 HAT 的帮助 ,谢谢谢谢!
论坛跳转: