楼 主
求一个批处理。把文本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 性别 男
状态 离线
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正