找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27829|回复: 4

[文本处理] 替换txt中2个指定字符(字符串)中间的文本

[复制链接]
发表于 2018-1-11 12:32:47 | 显示全部楼层 |阅读模式
源文件的内容:
#EXTINF:0 tvg-logo="http://iptv-vod.eu/iptv/logo/3.png" group-title="Общественные"  tvg-name="http://m.tv.yandex.ru/213/channels/146" ,Первый канал
http://82.200.127.58:8080/udp/239.0.42.81:1224
#EXTINF:0 tvg-logo="http://iptv-vod.eu/iptv/logo/3.png" group-title="Общественные"  tvg-name="http://m.tv.yandex.ru/213/channels/146" ,Первый канал
http://82.200.127.58:8080/udp/239.0.42.121:1224
#EXTINF:0 tvg-logo="http://iptv-vod.eu/iptv/logo/1.png" group-title="Общественные"  tvg-name="http://m.tv.yandex.ru/213/channels/79" ,СТС
http://82.200.127.58:8080/udp/239.0.42.93:1224

寻找#EXTINF:与,之间的内容并替换成:
#EXTINF:-1 ,Первый канал
http://82.200.127.58:8080/udp/239.0.42.81:1224
#EXTINF:-1 ,Первый канал
http://82.200.127.58:8080/udp/239.0.42.121:1224
#EXTINF:-1,СТС
http://82.200.127.58:8080/udp/239.0.42.93:1224

请教大神怎么实现?先谢了!
发表于 2018-1-11 13:55:13 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-1-11 14:04 编辑
  1. @echo off
  2. set "ScDir=D:\temp"
  3. set "spt1=#EXTINF:"
  4. set "spt2=,"
  5. cd /d "%ScDir%"
  6. for /f  "delims=" %%a in ('dir /a-d /s /b *.txt') do (
  7.         for /f  "delims=" %%i in ('findstr /n ".*" "%%a"') do (
  8.         set "var=%%i"
  9.         setlocal enabledelayedexpansion
  10.         set var=!var:*:=!
  11.                 echo;!var!|findstr "%spt1%">nul
  12.                 if !errorlevel!==0 (
  13.                 rem 提取尾部字符串
  14.                         call :get_string "!var!" end_str
  15.                         rem 生成新的字符串
  16.                         set "var=%spt1%-1 %spt2%!end_str!"
  17.                         echo !var!
  18.                 ) else if !var!. neq . (echo !var!) else (echo.)
  19.                 endlocal
  20.         )>>"%%a.log"  
  21.         rem 删除move前rem可对源文件进行替换       
  22.         rem move /y "%%a.log" "%%a">nul   
  23. )
  24. pause
  25. exit
  26. rem 获取,后结尾字符串
  27. :get_string
  28. setlocal
  29. set "name=%~1"
  30.         :lp
  31.         call set "ch=%%name:~%i%,1%%"
  32.         if "%ch%" neq "%spt2%" set /a i-=1&goto :lp
  33.         set /a i+=1       
  34.         call set "name=%%name:~%i%%%"
  35. endlocal&set "%2=%name%"&goto:eof
复制代码
 楼主| 发表于 2018-1-11 14:19:57 | 显示全部楼层
回复 2# yhcfsr


    没成功啊,大神
发表于 2018-1-11 16:56:45 | 显示全部楼层
回复 3# suchost


    没成功?就三个字神也帮不了你,想要即时解决问题,加论坛群或我QQ33892006,不可能一分钟60秒都守在这吧。
发表于 2018-1-11 20:22:07 | 显示全部楼层
http://batch-cn.qiniudn.com/tool/4.0.7/sed.exe
  1. sed -i "s/#EXTINF:.*,/#EXTINF:-1 ,/g" 1.txt
复制代码
保护好源文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 04:57 , Processed in 0.017632 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表