CMD/BAT - [решено] Замена динамической строки по номеру

Ответить
Аватара пользователя
Itexz@twitter

CMD/BAT - [решено] Замена динамической строки по номеру

Сообщение Itexz@twitter »

Всем привет!

Есть у меня файл, в нем есть строка под номером 57, а в ней 60, причем цифра там может быть какой угодно.

Надо получить вместо именно 57ой строки просто . При этом не затрагивая предыдущие и следующие строки в которых тоже есть

Пытался убрать эту строку через findstr, да как-то не получается...

Если это поможет, то в 56ой строке есть уникальный текст totalTime:



Очень нуждаюсь в помощи, спасибо!
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Замена динамической строки по номеру

Сообщение Georgio »

Почти как здесь:
CMD/BAT - Как добавить текст в середину текстрового файла
.



Код: Выделить всё

@echo off
 for /f %%i in ('find /c /v ""^<"YOUR.TXT"') do set n=%%i
(
 for /l %%i in (1 1 %n%) do (
  set string=
  set /p string=
  if %%i==57 (
    set /p="<td></td>"<nul
    echo.
) else (
   if defined string (
    call set /p="%%string%%"<nul
    if %%i==%n% (
     goto:eof
    )
   )
   echo.
  )
 )
)<"YOUR.TXT">"YOUR_NEW.TXT"
Аватара пользователя
Itexz@twitter

Re: CMD/BAT - [решено] Замена динамической строки по номеру

Сообщение Itexz@twitter »

Georgio, к сожалению то что вы написали удаляло много лишнего из файла.



В итоге нашел решение через

Код:

Код: Выделить всё

sed.exe "56,57 d" results.html 1>results_wo_time.html

Sed.exe взял
отсюда


Скачал там Binaries и Dependencies. В итоге для работы sed.exe понадобилось 4 файла

libiconv2.dll, libintl3.dll, regex2.dll, sed.exe
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Замена динамической строки по номеру

Сообщение Georgio »

Цитата Itexz@twitter:



удаляло много лишнего из файла .
CMD/BAT - [решено] Замена динамической строки по номеру




Что же такое может удаляться при применении данного кода, если это самый безопасный вариант для пакетных файлов?



Проблема может существовать, насколько я знаю, только со следующими сочетаниями символов:

1) знаки равенства "=" и их сочетание с пробелами в начале строки

2) непарная двойная кавычка """, находящаяся слева от угловых скобок "", амперсанда "&" и вертикальной черты "|" (интересно, что если в коде написать

Код:

Код: Выделить всё

set /p string=""

или

Код:

Код: Выделить всё

set /p "string="

, то всё будет в точности наоборот: "мешать" будет непарная кавычка, находящаяся справа от перечисленных символов)

3) пробелы, составляющие строку.



Первое и второе довольно редко встречается в HTML- и XML-файлах (хотя с таковыми сталкивался), третье практически несущественно. Все такие "плохие" строки в выходном файле обычно эаменяются на пустую строку, т. е. действительно удаляются.



Т. о., выход пока один: для обрабоки с помощью пакетного файла использовать "правильные" документы.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Замена динамической строки по номеру

Сообщение Iska »

Цитата Georgio:



Что же такое может удаляться при применении данного кода, если это самый безопасный вариант для пакетных файлов?
CMD/BAT - [решено] Замена динамической строки по номеру




Georgio, перенаправление ввода/вывода!?



Я потому и предпочитаю использовать WSH в виде VBScript+DOM, потому как там в принципе отсутствует такое понятие, как «escape-последовательность», присущее строкам в пакетных файлах, на JScript и в PowerShell. И заранее не знаешь, где и в каком месте это тебе аукнется при обработке произвольного файла.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Замена динамической строки по номеру

Сообщение Georgio »

Цитата Iska:



Я потому и предпочитаю использовать WSH в виде VBScript+DOM, потому как там в принципе отсутствует такое понятие, как «escape-последовательность», присущее строкам в пакетных файлах, на JScript и в PowerShell. И заранее не знаешь, где и в каком месте это тебе аукнется при обработке произвольного файла.
CMD/BAT - [решено] Замена динамической строки по номеру








Согласен абсолютно, но возможность корректной трансляции содержимого одного текстового файла в другой с помощью пакетных файлов меня интересует именно с теоретической стороны. Что ж, "борьба продолжается"!
Ответить

Вернуться в «Скриптовые языки администрирования Windows»