中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 02:27
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求一个批处理。把文本a中所每行单词hello后文字全部删除 查看 901 回复 4
楼 主 求一个批处理。把文本a中所每行单词hello后文字全部删除 发表于 2010-08-04 20:11 ·  中国 河南 南阳 联通
新手上路
积分 5
发帖 5
注册 2009-12-15 11:48
16年会员
UID 156633
性别 男
状态 离线
求一个批处理。把文本a.txt中每行单词hello(单词hello已确定存在)后文字全部删除输出为b.txt

多谢高手了
2 发表于 2010-08-04 21:04 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
@echo off
setlocal enabledelayedexpansion
type nul>b.txt
for /f "tokens=*" %%a in (a.txt) do (
set line=%%a
for /f "tokens=2 delims=#" %%b in ("!line:hello=#!") do (
echo %%b >>b.txt
)
)
pause


将hello 替换为# 然后以#为分割。 缺点是如果这一行带#就拜拜了
其他特殊字符事故我不管。

[ Last edited by 523066680 on 2010-8-4 at 21:05 ]
3 发表于 2010-08-04 21:10 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
有#的话可以通过提前对变量中的#临时替换,避免#造成的分割。

没有出现hello的句子会被掠过。

还有个问题是会不会出现两个hello? 那样的话选哪个hello后面的字符
4 发表于 2010-08-04 21:29 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
纯批

@echo off&setlocal enabledelayedexpansion
(for /f "tokens=*" %%a in (a.txt) do (
set line=%%a
set line=!line:hello=hello%%!
call echo !line!%%
))>b.txt


缺陷,a.txt中不能含有%

SED


sed s/\bhello\b.*/hello/ a.txt > b.txt
5 发表于 2010-08-04 21:48 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
论坛跳转: