Войти

Показать полную графическую версию : как удалить любые две буквы между двумя знаками «>» и «/» в каждой строке в текстовом


sergey14235
25-04-2019, 12:46
как удалить любые две буквы между двумя знаками «>» и «/» в каждой строке в текстовом файле, используя bat?

<frame>59/592582ae031011e6e19f141877341409</frame>
<frame>93/93ffff76b4fc11e85a8d2cfda1bf577d</frame>
<frame>1b/1b730c7216ae11e6cd8f141877341409</frame>
<frame>33/335902e616af11e6cd8f141877341409</frame>
<frame>a9/a9034ee4b39e11e55f83141877341409</frame>
<frame>69/69bd29c8031011e6e19f141877341409</frame>

megaloman
25-04-2019, 14:28
sergey14235, что должно получиться в ответе?

Busla
25-04-2019, 14:39
sergey14235, никак
в батнике не получится анализировать строки содержащие >

greg zakharov
25-04-2019, 15:19
в батнике не получится анализировать строки содержащие >
Подобное заявление простительно начинающим.
как удалить любые две буквы между двумя знаками «>» и «/» в каждой строке в текстовом файле, используя bat?
Примерный алгоритм: опрашиваем файл на количество строк, перенаправляем его содержимое в отладочный поток, узнаем длину строки, на основании чего генерируем пару случайных чисел (индексы букв в строке), по этим индексам режем строку на сегменты. В переводе на cmd это примерно будет так:
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('find /v /c "" ^< file.txt') do set "n=%%i"
3<file.txt (
for /l %%i in (1, 1, !n!) do (
set /p s=<&3
for /f "tokens=2 delims=><" %%j in ("!s!") do set "raw=%%j"
call:strlen !raw!
call:rand !i! f
call:rand !i! s
if !f! gtr !s! (
set "var=!f!"
set /a "f=!s!","s=!var!"
)
if !f! equ !s! (
if !s! equ !i! (set /a "f-=2","s-=1") else set /a "s-=1"
)
rem строка и индексы, как извлечь подстроки, сообразите сами
echo !raw! !f! !s!
)
)
endlocal
exit /b

:strlen
set "s=%~1"
set /a "i=1"
:while
set "c=!s:~%i%!"
if defined c set /a "i+=1"&goto:while
exit /b

:rand
set /a "r=!random! * %~1 / 32768 + 1"
set "%~2=!r!"
exit /b
Проще в cmd только используя sed.

megaloman
25-04-2019, 16:28
Busla, Я не понимаю, в чём задача, но если надо из приведенного текста из файла сделать файл с текстом <frame>592582ae031011e6e19f141877341409</frame>
<frame>93ffff76b4fc11e85a8d2cfda1bf577d</frame>
<frame>1b730c7216ae11e6cd8f141877341409</frame>
<frame>335902e616af11e6cd8f141877341409</frame>
<frame>a9034ee4b39e11e55f83141877341409</frame>
<frame>69bd29c8031011e6e19f141877341409</frame>
То вот код@Echo Off
Set "InFile=Z:\Box_Arc\txt.txt"
Set "OutFile=Z:\Box_Arc\txt2.txt"

2>nul Del "%OutFile%"
FOR /F "usebackq tokens=1,2,* delims=>/" %%i IN ("%InFile%") DO (<Nul Set /P $V="%%i>%%k">>"%OutFile%" &>>"%OutFile%" Echo.)
Exit /B




© OSzone.net 2001-2012