[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# hlzj88


    如下代码,可以达到楼主你的要求,在55.txt内,文字前面内容未去除
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1 delims=" %%k in ('findstr /n .* 33.txt')do (echo %%k>>44.txt)
  4. for /f "delims=:" %%i in ('findstr /n .">楼主" 33.txt') do (
  5.   echo 楼主标志的行号 %%i
  6.   set /a xy=%%i+1
  7. for /f "tokens=1* delims=:" %%m in ('findstr .* 44.txt')do (
  8. set tt=%%m
  9. if !xy!==!tt! echo %%n>>55.txt
  10. )
  11. )
  12. del /f/q 44.txt
  13. pause
复制代码
最终结果(55.txt内容):
  1. <divclass="bbs-contentclearfix">  爷爷是传承五代人的
  2. <divclass="bbs-content">  床尾站着一小仙,男,中批
  3. <divclass="bbs-content"><br>  <imgsrc="http://static.tianyaui.com/img/static/2011/imgloading.gif"title="点击图片
  4. <divclass="bbs-content">  那日入定,爷爷带
复制代码
1

评分人数

    • hlzj88: 谢谢,就是要这样的结果技术 + 1

TOP

回复 3# hlzj88


   补充去除文字外的字符:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1 delims=" %%k in ('findstr /n .* 33.txt')do (echo %%k>>44.txt)
  4. for /f "delims=:" %%i in ('findstr /n .">楼主" 33.txt') do (
  5.   echo 楼主标志的行号 %%i
  6.   set /a xy=%%i+1
  7. for /f "tokens=1* delims=:" %%m in ('findstr .* 44.txt')do (
  8. set tt=%%m
  9. if !xy!==!tt! echo %%n>>55.txt
  10. )
  11. )
  12. del /f/q 44.txt
  13. for /f "tokens=1* delims=>  " %%a in ('findstr .* 55.txt')do (
  14. echo %%b>>66.txt
  15. )
  16. pause
复制代码
最终结果(66.txt内容):
  1. 爷爷是传承五代人的
  2. 床尾站着一小仙,男,中批
  3. <br>  <imgsrc="http://static.tianyaui.com/img/static/2011/imgloading.gif"title="点击图片
  4. 那日入定,爷爷带
复制代码

TOP

回复 10# hlzj88


    那8楼符合,你试试

TOP

回复 12# hfxiang


    好精简,不过我刚特意下载试了下,生成的2.txt/3.txt文件内为空且会变成UTF-8格式。是不是代码运用错了?
  1. @echo off
  2. gawk "{if(A)if(B!=$0)if(NF){$0=gensub(/<.*>[ \t]*/,\"\",\"g\");print};A=0}/^楼主/{A=1;B=$0}" 33.txt>2.txt
  3. pause
  4. gawk "A;A=0;/^楼主/{A=1}" 33.txt>3.txt
  5. pause
复制代码

TOP

回复 14# hfxiang


   文本和批处理,都是ANSI格式的,而且我提前准备了ANSI格式的2.txt和3.txt,待批处理运行后,就变成空的了,而且格式自动转为UTF-8了,你可以亲自试试。谢谢!

TOP

回复 6# pd1

试了下,好像有问题啊,是哪里原因?错误信息见下。
批处理当前目录有 333.txt文档,报错后在目录C:\Windows\System32\WindowsPowerShell\v1.0\放入333.txt文档仍会如下报错:
  1. gc : 找不到路径“C:\Windows\System32\WindowsPowerShell\v1.0\333.txt”,因为该路径不存在。
  2. 所在位置 行:6 字符: 4
  3. + $a=gc .\333.txt
  4. +    ~~~~~~~~~~~~
  5.     + CategoryInfo          : ObjectNotFound: (C:\Windows\Syst...ll\v1.0\333.txt:String) [Get-Content], ItemNotFoundEx
  6.    ception
  7.     + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
  8. 无法对 Null 数组进行索引。
  9. 所在位置 行:7 字符: 24
  10. + 0..($a.Length-1) |%{if($a[$_].contains(">楼主")){$_+2}}
  11. +                        ~~~~~~~~~~~~~~~~~~~~~~
  12.     + CategoryInfo          : InvalidOperation: (:) [],RuntimeException
  13.     + FullyQualifiedErrorId : NullArray
  14. 无法对 Null 数组进行索引。
  15. 所在位置 行:7 字符: 24
  16. + 0..($a.Length-1) |%{if($a[$_].contains(">楼主")){$_+2}}
  17. +                        ~~~~~~~~~~~~~~~~~~~~~~
  18.     + CategoryInfo          : InvalidOperation: (:) [],RuntimeException
  19.     + FullyQualifiedErrorId : NullArray
  20. 请按任意键继续. . .
复制代码

TOP

回复 16# hfxiang


    是系统原因吗?我的是Win11系统。
附验证动图 https://wwp.lanzouv.com/izR2l0ednn2b

TOP

回复 19# hfxiang


    好的,谢谢了

TOP

回复 24# pd1


   是放在bat目录,是 ANSI格式,就是不行啊。可能也是系统差异。

TOP

回复 26# WHY


    厉害!4个命令中,除了第一个生成空白,其它三个都有效。

TOP

回复 29# WHY


    感谢!你的这个sed.exe可以。
我下载了几个sed.exe,还下了对应dll试了都不行。还是你得好。

TOP

回复 30# WHY

  已试有效,代码很精简,学习了!

TOP

回复 34# terse

在我电脑系统上运行报错:
  1. select-string : 找不到路径“C:\Windows\System32\WindowsPowerShell\v1.0\a.txt”,因为该路径不存在。
  2. 所在位置 行:1 字符: 2
  3. + (select-string 'a.txt' -pattern '>楼主:?<' –context 1).Context.PostCont ...
  4. +  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5.     + CategoryInfo          : ObjectNotFound: (C:\Windows\Syst...hell\v1.0\a.txt:String) [Select-String], ItemNotFound
  6.    Exception
  7.     + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SelectStringCommand
复制代码

TOP

回复 36# terse


    在批处理所在目录 和如下目录 均放有A.txt,但跟6楼的powershell命令情况一样,在我电脑都提示找不到文本。目前只有26楼的 两个powershell命令 在我的电脑均正常
  1. “C:\Windows\System32\WindowsPowerShell\v1.0\a.txt”
复制代码

TOP

回复 34# terse
  1. powershell "(select-string 'a.txt' -pattern '>楼主:?<' –context 1).Context.PostContext" >a11.txt
  2. powershell "(select-string 'a.txt' -pattern '>楼主:?<' –context 1  -Encoding default ).Context.PostContext" >a_#.txt
复制代码
    大概找到原因了,跟目录名称是否含有特殊字符有关
例如目录是E:\11\,你34楼的两条命令都不报错,但第1条命令输出为空,第2条命令正常
如果目录是E:\[文本处理] 提文求助:取\,则两条命令都报错,找不到文本
也就是说34楼两条命令没有对含有特殊字符的目录进行处理。

TOP

返回列表