如何用 批处理 删除txt文件中指定字符串后面的所有字符

如何有txt文件,内容如下
djsfkadfadf
......
中间N行
.....
dafadf00000
dsfadsf
dfadsf
要求用批理,删除00000后面的的所有内容,如何实现呢?
dsfadf
楼下两位,我是说用批处理实现,你们不懂什么是批处理吧

批处理本身实现很鸡肋,用第三方的 SED 或者 awk 吧,比如:

sed -n "1,/00000$/p" urfile
sed "/00000$/q" urfile
awk "1; $0 ~ /00000$/{exit}" urfile

将下载文件放到 c:\windos\system32\ 中,执行以上命令。追问

你这个好像没法用啊,你的代码中完全没有见到txt文件名啊

追答

把urfile改成你的txt文件。将txt拷贝到C:根目录,然后 “开始——运行——cmd /k pushd c:\”
执行如上命令就行了。输出的话在命令行最后面加 “> out.txt” 就可以看到效果了。另,你需加固基础知识才行,这里涉及到正则表达式,不知是否看出来了?

追问

呵呵,本人确实不在懂这个

追答

代码能用否?

参考资料:http://cm.bell-labs.com/who/bwk/awk95.exe

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-24
find获取个行数n。more 跳过n行。具体代码不想写了。。。累死了。。如果可以你去搜索。或者等别人。。不过用more多少有点。。就是行数很多的话那么就。。追问

如果能搜到我也不用在这里问啊

第2个回答  2012-01-23
用frontapege或者是drw的“转换全部打开的文件”功能。按ctrl+h可以实现
第3个回答  2012-01-24
1.txt ------ 2.txt 代码演示:
@echo off&setlocal enabledelayedexpansion
(for /f "tokens=*" %%a in (1.txt) do (
set .=%%a&set .=!.:00000=☆!
for /f "delims=☆" %%b in ('echo !.!')do echo %%b
))>2.txt
pause追问

不对啊,你这个只能删除0000所在行后面的内容,我是说删掉整个txt中0000后面的内容!意思是后面和下面所有内容全都没有了!

追答

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (1.txt) do (
set .=%%a&set .=!.:00000=☆!
if "!.!"=="%%a" (echo %%a>>2.txt) else (
echo %%a>>2.txt
pause&exit
)
)
pause

追问

你好,你这个代码很好用,但还是最后一个问题,你修改后的文件是2.txt,但我希望是在原文件基础上修改,意思是修改好文件还是1.txt 麻烦再看看这个问题,分肯定是给你了

追答

@echo off
setlocal enabledelayedexpansion
set file=1.txt
for /f "tokens=*" %%a in (!file!) do (
set .=%%a&set .=!.:00000=☆!
if "!.!"=="%%a" (echo %%a>>2.txt) else (
echo %%a>>2.txt
goto end
)
)
:end
move 2.txt !file!
pause

追问

很好,谢谢

本回答被提问者采纳
相似回答