Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена динамической строки по номеру

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

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Всем привет!
Есть у меня файл, в нем есть строка под номером 57, а в ней <td>60</td>, причем цифра там может быть какой угодно.
Надо получить вместо именно 57ой строки просто <td></td>. При этом не затрагивая предыдущие и следующие строки в которых тоже есть <td></td>
Пытался убрать эту строку через findstr, да как-то не получается...
Если это поможет, то в 56ой строке есть уникальный текст <td>totalTime:</td>

Очень нуждаюсь в помощи, спасибо!

Отправлено: 03:26, 08-02-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Itexz@twitter:
CMD/BAT - Замена динамической строки по номеру »
WSH/PoSH+DOM.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:22, 08-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Почти как здесь: http://forum.oszone.net/post-2304237-44.html.

Код: Выделить весь код
@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"

Последний раз редактировалось Georgio, 08-02-2014 в 06:36.

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:20, 08-02-2014 | #3


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


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

Отправлено: 12:37, 08-02-2014 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата Itexz@twitter:
<...> удаляло много лишнего из файла .»
Что же такое может удаляться при применении данного кода, если это самый безопасный вариант для пакетных файлов?

Проблема может существовать, насколько я знаю, только со следующими сочетаниями символов:
1) знаки равенства "=" и их сочетание с пробелами в начале строки
2) непарная двойная кавычка """, находящаяся слева от угловых скобок "<" и ">", амперсанда "&" и вертикальной черты "|" (интересно, что если в коде написать
Код: Выделить весь код
set /p string=""
или
Код: Выделить весь код
set /p "string="
, то всё будет в точности наоборот: "мешать" будет непарная кавычка, находящаяся справа от перечисленных символов)
3) пробелы, составляющие строку.

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

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

Отправлено: 16:16, 08-02-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 16:27, 08-02-2014 | #6


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


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


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

Отправлено: 18:10, 08-02-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена динамической строки по номеру

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
Медиа - [решено] Сортировка файлов по номеру, имени и т.д. medvedkovo Microsoft Windows 7 2 19-01-2011 01:34
Интерфейс - Сортировка аудиофайлов по номеру трека konstantinych Microsoft Windows 2000/XP 2 27-02-2010 15:07
[решено] Замена символа в строке, по номеру [PERL] WestBronx Вебмастеру 1 22-03-2008 14:31




 
Переход