Board logo

标题: [文本处理] 请教批处理如何删除文本里的特定字符串/内容? [打印本页]

作者: dyz1997    时间: 2017-3-14 12:01     标题: 请教批处理如何删除文本里的特定字符串/内容?

本帖最后由 pcl_test 于 2017-3-16 09:16 编辑

列:
[02:16.82]批[02:17.69]处[02:18.30]里[02:18.86]之[02:19.32]家[02:19.68]

[01:20.94][03:28.35][04:02.04]刚开始学习

想得到下面的结果:
[02:16.82]批处理之家[02:19.68]

[01:20.94][03:28.35][04:02.04]刚开始学习

刚开始学习不会用变量,请大神给做个示列。
1.批字到家字之间的[]数量不定,但不会超过20个
2.刚字前面的[]数量不定,不会超过5个
3.指定删除我会用,就是想学学变量如何使用。

先谢谢各位老师了
作者: 老刘1号    时间: 2017-3-14 12:28

语焉不详。
作者: dyz1997    时间: 2017-3-14 12:40

本帖最后由 dyz1997 于 2017-3-14 22:18 编辑

我的意思就是在文本里

[02:16.82]批[02:17.69]处[02:18.30]里[02:18.86]之[02:19.32]家[02:19.68]

[01:20.94][03:28.35][04:02.04]刚开始学习

的内容通过批处理得到以下的内容

[02:16.82]批处理之家[02:19.68]

[01:20.94][03:28.35][04:02.04]刚开始学习

刚开始学,不知道更好的表述方法,见谅
作者: taofan712    时间: 2017-3-14 23:20

确实有点不知所云,所以就题解题,假设你有一个文本,内有两行内容。
没看出来两行内容有什么规律,所以两行分开处理。
  1. @echo off
  2. for /f "tokens=1-26 delims=[]" %%a in (a.txt) do (
  3. if defined second (
  4.      echo;[%%a][%%b][%%c]%%d
  5. ) else (
  6.      echo;[%%a]%%b%%d%%f%%h%%j[%%k]
  7.      set second=2
  8. )
  9. )
  10. pause&exit /b
复制代码

作者: GNU    时间: 2017-3-14 23:28

回复 4# taofan712


    楼主说的挺清楚了,中括号的数量是不确定的,你这样写死无法解决楼主的问题。
作者: taofan712    时间: 2017-3-14 23:37

回复 5# GNU
的确中括号不确定,所以我就题解题,万一楼主看到之后突然灵感来了呢 ^_^
作者: GNU    时间: 2017-3-14 23:41

回复 6# taofan712


    可能性不大。楼主说了:指定删除我会用。猜测他自己写的代码跟你一个思路。
作者: taofan712    时间: 2017-3-14 23:45

回复 7# GNU


    那可能得这样了
第一行:delims=[],取第1列,再用纯for取最后1列,剩下中间的每一列判断是否有数字,没有的就提取出来。  是该这样想吗
作者: dyz1997    时间: 2017-3-15 14:07

回复 4# taofan712
非常感谢  您费心了  谢谢
作者: dyz1997    时间: 2017-3-15 14:09

回复  taofan712


    可能性不大。楼主说了:指定删除我会用。猜测他自己写的代码跟你一个思路。
GNU 发表于 2017-3-14 23:41

大神  厉害了  被你说中了   感谢回贴
作者: dyz1997    时间: 2017-3-15 14:14

本帖最后由 dyz1997 于 2017-3-15 14:17 编辑
回复  GNU


    那可能得这样了
第一行:delims=[],取第1列,再用纯for取最后1列,剩下中间的每一列 ...
taofan712 发表于 2017-3-14 23:45

谢谢提示  第一行  取第一列和最后一列 中间的用数子判断是个好方法  但这方法到第2行就不行了,如果是多行就无法处理了   谢谢提供思路
作者: pcl_test    时间: 2017-3-16 09:03

  1. //&cls&cscript -nologo -e:jscript "%~f0"<"文本.txt"&pause&exit
  2. WSH.echo(WSH.StdIn.ReadAll().replace(/([^\]\r\n]+)\[[\d\.:]+\](?!\s*$)/mg, '$1'))
复制代码

作者: dyz1997    时间: 2017-3-22 16:57

回复 12# pcl_test


    谢谢版主    我在学习学习  消化消化




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2