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

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

本帖最后由 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.指定删除我会用,就是想学学变量如何使用。

先谢谢各位老师了

语焉不详。

TOP

本帖最后由 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]刚开始学习

刚开始学,不知道更好的表述方法,见谅

TOP

确实有点不知所云,所以就题解题,假设你有一个文本,内有两行内容。
没看出来两行内容有什么规律,所以两行分开处理。
  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
复制代码

TOP

回复 4# taofan712


    楼主说的挺清楚了,中括号的数量是不确定的,你这样写死无法解决楼主的问题。

TOP

回复 5# GNU
的确中括号不确定,所以我就题解题,万一楼主看到之后突然灵感来了呢 ^_^

TOP

回复 6# taofan712


    可能性不大。楼主说了:指定删除我会用。猜测他自己写的代码跟你一个思路。

TOP

回复 7# GNU


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

TOP

回复 4# taofan712
非常感谢  您费心了  谢谢

TOP

回复  taofan712


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

大神  厉害了  被你说中了   感谢回贴
1

评分人数

    • pcl_test: 指定回应某楼层的在相应楼层点回复,少引用PB -1

TOP

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


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

谢谢提示  第一行  取第一列和最后一列 中间的用数子判断是个好方法  但这方法到第2行就不行了,如果是多行就无法处理了   谢谢提供思路

TOP

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

TOP

回复 12# pcl_test


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

TOP

返回列表