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


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

TOP

回复 30# WHY

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

TOP

我的也是,不是我常用的sed版本。
目的,学习批处理

TOP

本帖最后由 terse 于 2022-10-23 00:36 编辑
  1. powershell "(select-string 'a.txt' -pattern '>楼主:?<' –context 1).Context.PostContext" >a11.txt
复制代码
处理ANSl编码
  1. powershell "(select-string 'a.txt' -pattern '>楼主:?<' –context 1  -Encoding default ).Context.PostContext" >a_#.txt
复制代码

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

回复 35# fzp070

找不到文件? 没有A.txt吗?

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

回复 38# fzp070
如有特殊字符 加个参数试下 类似于这样
  1. select-string -Lit 'e:\[文本处理] 提文求助:取\a1.txt'   ......  
复制代码

TOP

回复 39# terse


    嗯,这样之后,第2条命令正常了(第1条不报错,但输出空白),但也不方便了,每次使用都要手动输入目录,目录太长还不好看。

TOP

回复 40# fzp070
简单事给复杂化了,两条用上一条就可以了,文件编码是UTF-8的话就用第一条命令,编码ANSL就用第二条命令,脚本和文件同一目录处理
  1. powershell "(select-string  -Lit '%~dp0a.txt' -pattern '>楼主:?<' –context 1 ).Context.PostContext" >a_a.txt
复制代码
  1. powershell "(select-string -Lit '%~dp0a1.txt' -pattern '>楼主:?<' –context 1 -Encoding default).Context.PostContext" >a_1.txt
复制代码
2

评分人数

    • hlzj88: 谢谢,收藏了!技术 + 1
    • fzp070: 两条都OK了技术 + 1

TOP

回复 41# terse


    OK,这次两条都可以了。谢谢分享!

TOP

纯p 处理文本文件不是强项,下面代码勉强可用,效率应当不是太好。bat文件保存为ANSI编码,要处理的文本最好也是ANSI编码:
  1. @echo off
  2. set n=0
  3. setlocal enabledelayedexpansion
  4. (for /f "delims=" %%i in (33.txt) do (
  5.     if !n! equ 1 echo,%%i
  6.     set "str=%%i"
  7.     if not "!str:>楼主=!"=="!str!" (set n=1) else set n=0
  8. ))>44.txt
  9. pause
复制代码
2

评分人数

    • fzp070: 这个思路学习了。感谢分享!技术 + 1
    • hlzj88: 谢谢,收藏了!学习学习技术 + 1

TOP

回复 43# qixiaobin0715
速度也不慢,1M文本处理也是瞬间的事
目的,学习批处理

TOP

贴一个 grep 方案,没有 gawk 和 sed 来的方便。
  1. grep -P -A1 --no-group-separator ">楼主(:)?<" a.txt | grep -P -v ">楼主(:)?<" | find /v "" > b.txt
复制代码
1

评分人数

    • fzp070: 感谢分享,有效。技术 + 1

TOP

返回列表