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

[文本处理] 批处理如何批量删除多个UTF-8编码的文本内的指定字符串(<>之间的内容)?

本帖最后由 pcl_test 于 2016-8-14 12:08 编辑

在同一目录中,有很多个 *.trc 文件,批处理怎么才能删除这些内容后按原文件名输出到另一个文件夹???

例如;

[00:04.81]<736>嘉<564>俊<500>出<438>品<438>,<434>必<754>属<936>精<3059>品
[00:12.37]<548>每<316>段<500>故<623>事<377>都<312>有<312>一<376>篇<500>剧<1180>情
[00:17.12]<740>每<376>段<560>爱<564>情<312>都<310>像<378>动<312>人<565>旋<1180>律
[00:22.12]<740>一<312>颗<564>真<624>心<312>却<312>只<312>向<374>着<566>你<686>前<621>进
[00:27.25]<612>也<377>许<559>爱 <312>越<376>单<564>纯<560>越<564>着<1369>迷

怎么把符号 <> 之间,包括符号“<>”也全部删除。不是替换,删除后不留任何空格或者符号,自己摸索了很久,还是不会,求大神帮忙了!!!!!
1

评分人数

sed -r "s/<[^>]+>//g" 1.trc > 2.trc
下个sed.exe
初九的冬天

TOP

  1. sed -r -i "s/<[^>]+>//g" *.trc
复制代码

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. for %%b in (*.trc) do (
  3.   (for /f "delims=" %%a in (%%b) do (
  4.     set str=%%a&set str=!str: =!&set str=!str:^<= !
  5.     for %%i in (!str!) do (set v=%%i&set v=!v:*^>=!&set/p=!v!<nul)
  6.     echo,
  7.   ))>>%%b_1.trc
  8. )
  9. pause
复制代码

TOP

  1. @echo off
  2. set "dst=e:\111\"
  3. md "%dst%" 2>nul
  4. for %%i in (*.trc) do (
  5.   (for /f "usebackq tokens=1* delims=]" %%a in ("%%i") do (
  6.      setlocal enabledelayedexpansion
  7.      if not "%%b"=="" (
  8.       set "str=]%%b"
  9.         for %%a in (0 1 2 3 4 5 6 7 8 9 ^< ^>) do set "str=!str:%%a=!"
  10.      )
  11.      echo,%%a!str!
  12.      endlocal
  13.   ))>"%dst%%%i"
  14. )
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

新写入的文件怎么是空文件啊?系统是W7的 4# foxJL

TOP

回复 6# 377563714


我也是WIN7系统,测试了没有问题
批处理文件和.trc文件放同一目录

TOP

把你的trc文件压缩一个传上来.

TOP

是在同一目录的,就是写入的文件是空内容的 7# foxJL

TOP

[attach]6864[/attach]回复 8# foxJL

TOP

没有看到附件回复 10# 377563714

TOP

回复 8# foxJL

TOP

运行后就是这样的 11# foxJL

TOP

又是UTF-8编码,纯P好像没办法.试试向别的高手请教VBS或PS吧

TOP

谢谢版主的耐心帮助了 14# foxJL

TOP

返回列表