![Board logo](images/default/logo.gif)
标题: [文本处理] [已解决]批处理怎样批量删除指定字符串之后的内容 [打印本页]
作者: zxzl 时间: 2010-5-24 10:54 标题: [已解决]批处理怎样批量删除指定字符串之后的内容
如题,当前文件夹下有很多TXT文件,很多TXT文件中含有“-----------”这几个字符,现在想批量处理一下所有包含“-----------”的TXT文件,把“-----------”之后的内容全部删除,之前的内容保留,批处理该怎么写呢?
问题已解决,见9楼del的代码
[ 本帖最后由 zxzl 于 2010-5-24 15:49 编辑 ]
作者: hanyeguxing 时间: 2010-5-24 12:07
1,-----------这个内容是是否必定在一行内,还是跨行?
2,是删除-----------后的一这行的内容,还是删除-----------后所有行的内容?
3,是否保留-----------这一部分?
作者: del 时间: 2010-5-24 12:14
- @echo off
- set "str=-----------"
-
- for /f "delims=" %%s in ('findstr /m /c:"%str%" *.txt') do (
- findstr /n .* "%%s" > "%temp%\.tmp"
- (
- for /f "usebackq delims=" %%t in ("%temp%\.tmp") do (
- set var=%%t
- SetLocal EnableDelayedExpansion
- if "!var:%str%=!" neq "!var!" (
- for /f "delims=" %%L in ("!var:%str%=!") do set var=%%L
- )
- echo,!var:*:=!
- EndLocal
- )
- ) > "%%s"
- )
-
- del "%temp%\.tmp"
复制代码
如果要保留 -----------,请把 set var=%%L 改成 set var=%%L%str%
[ 本帖最后由 del 于 2010-5-24 12:23 编辑 ]
作者: zxzl 时间: 2010-5-24 12:41
DEL兄,这个"delims="是什么乱码?
作者: del 时间: 2010-5-24 13:34 标题: 回复 4楼 的帖子
是退格符,可以改成任意文件中不存在的字符。
作者: zxzl 时间: 2010-5-24 14:24
原帖由 del 于 2010-5-24 13:34 发表 ![](http://www.bathome.net/images/common/back.gif)
是退格符,可以改成任意文件中不存在的字符。
试了一下,这个代码只能把“-----------”这个字符串去掉,“-----------”之后的内容还在,是怎么回事呢
作者: del 时间: 2010-5-24 14:37 标题: 回复 6楼 的帖子
我这里测试正常。你是否修改了代码,如果没有,可否上传个样本?
作者: zxzl 时间: 2010-5-24 15:19
原帖由 del 于 2010-5-24 14:37 发表 ![](http://www.bathome.net/images/common/back.gif)
我这里测试正常。你是否修改了代码,如果没有,可否上传个样本?
又试了一下,“-----------”后紧接文本的时候可以将实现删除,但是“-----------”如果是单独一行的话只会把“-----------”删除,我的目的是把“-----------”之后的所有行全部删除,不是只删除包含“-----------”字符串的一行,呵呵,有点拗口了
作者: del 时间: 2010-5-24 15:34 标题: 回复 8楼 的帖子
- @echo off
- set "str=-----------"
-
- for /f "delims=" %%s in ('findstr /m /c:"%str%" *.txt') do call :sub "%%s"
- del "%temp%\.tmp"
- exit /b
-
- :sub
- findstr /n .* %1 > "%temp%\.tmp"
- (
- for /f "usebackq delims=" %%t in ("%temp%\.tmp") do (
- EndLocal
- set var=%%t
- SetLocal EnableDelayedExpansion
- if "!var:%str%=!" neq "!var!" (
- for /f "delims=" %%L in ("!var:%str%=!") do set var=%%L
- echo,!var:*:=!
- goto :eof
- )
- echo,!var:*:=!
- )
- ) > %1
复制代码
作者: CUer 时间: 2010-5-24 15:36
- sed -i "1,/-----------/!d" *.txt
复制代码
作者: zxzl 时间: 2010-5-24 15:48
感谢DEL的代码,这下问题解决了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |