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


   
俺的电脑太老旧了(2011年买的),目录已用Win10了(已经很卡顿了),win11从没想过尝试安装,有可能是系统问题,但具体原因真不清楚

TOP

回复 16# hfxiang


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

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

回复 15# fzp070


俺反复测试完全正常,结果如下:
  1. D:\test>gawk "{if(A)if(B!=$0)if(NF){$0=gensub(/<.*>[ \t]*/,\"\",\"g\");print};A=0}/^楼主/{A=1;B=$0}" 1.txt
  2. 爷爷是传承五代人的
  3. 床尾站着一小仙,男,中批
  4. 那日入定,爷爷带
  5. D:\test>gawk "A;A=0;/^楼主/{A=1}" 1.txt
  6. <divclass="bbs-contentclearfix">  爷爷是传承五代人的
  7. <divclass="bbs-content">  床尾站着一小仙,男,中批
  8. <divclass="bbs-content">  那日入定,爷爷带
复制代码

TOP

回复 14# hfxiang


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

TOP

回复 13# fzp070


   
脚本及代处理文件(如你的“33.txt”)均需确保为ANSI编码格式方可

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

回复 10# hlzj88


   
如果所有信息都保留,5楼的可简化为
  1. gawk "A;A=0;/^楼主/{A=1}" 1.txt>2.txt
复制代码

TOP

回复 10# hlzj88


    那8楼符合,你试试

TOP

谢谢楼上的各位,是要那些行的所有内容。
目的,学习批处理

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

回复 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

TOP

本帖最后由 pd1 于 2022-10-22 15:36 编辑

上面是行号,下面的是内容
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. $a=gc .\333.txt
  7. 0..($a.Length-1) |%{if($a[$_].contains(">楼主")){$_+2}}
复制代码
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. $a=gc .\333.txt
  7. 0..($a.Length-1) |%{if($a[$_].contains(">楼主")){$a[$_+1]}}
复制代码
1

评分人数

TOP

如不介意第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe ),假设下载合并后的文件为“1.txt”,则以下代码可实现
  1. gawk "{if(A)if(B!=$0)if(NF){$0=gensub(/<.*>[ \t]*/,\"\",\"g\");print};A=0}/^楼主/{A=1;B=$0}" 1.txt>2.txt
复制代码
1

评分人数

TOP

返回列表