标题: [文本处理] 替换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 编辑
- @echo off
- set "ScDir=D:\temp"
- set "spt1=#EXTINF:"
- set "spt2=,"
- cd /d "%ScDir%"
- for /f "delims=" %%a in ('dir /a-d /s /b *.txt') do (
- for /f "delims=" %%i in ('findstr /n ".*" "%%a"') do (
- set "var=%%i"
- setlocal enabledelayedexpansion
- set var=!var:*:=!
- echo;!var!|findstr "%spt1%">nul
- if !errorlevel!==0 (
- rem 提取尾部字符串
- call :get_string "!var!" end_str
- rem 生成新的字符串
- set "var=%spt1%-1 %spt2%!end_str!"
- echo !var!
- ) else if !var!. neq . (echo !var!) else (echo.)
- endlocal
- )>>"%%a.log"
- rem 删除move前rem可对源文件进行替换
- rem move /y "%%a.log" "%%a">nul
- )
- pause
- exit
- rem 获取,后结尾字符串
- :get_string
- setlocal
- set "name=%~1"
- :lp
- call set "ch=%%name:~%i%,1%%"
- if "%ch%" neq "%spt2%" set /a i-=1&goto :lp
- set /a i+=1
- call set "name=%%name:~%i%%%"
- 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- sed -i "s/#EXTINF:.*,/#EXTINF:-1 ,/g" 1.txt
复制代码
保护好源文件
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |