Board logo

标题: [文本处理] 替换txt中2个指定字符(字符串)中间的文本 [打印本页]

作者: suchost    时间: 2018-1-11 12:32     标题: 替换txt中2个指定字符(字符串)中间的文本

源文件的内容:
#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

请教大神怎么实现?先谢了!
作者: yhcfsr    时间: 2018-1-11 13:55

本帖最后由 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
复制代码

作者: suchost    时间: 2018-1-11 14:19

回复 2# yhcfsr


    没成功啊,大神
作者: yhcfsr    时间: 2018-1-11 16:56

回复 3# suchost


    没成功?就三个字神也帮不了你,想要即时解决问题,加论坛群或我QQ33892006,不可能一分钟60秒都守在这吧。
作者: hlzj88    时间: 2018-1-11 20:22

http://batch-cn.qiniudn.com/tool/4.0.7/sed.exe
  1. sed -i "s/#EXTINF:.*,/#EXTINF:-1 ,/g" 1.txt
复制代码
保护好源文件




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