Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск и удаление через bat (http://forum.oszone.net/showthread.php?t=352393)

ivan456 16-11-2022 08:39 2996591

Поиск и удаление через bat
 
Всем привет.
Какой день ломаю голову, не могу понять как удалить текст в xml файле в автоматическом режиме через cmd/bat
Пример:
<txt>какой_то_text_252.255.1</txt>
1. Весь код в одну строку.
2. нужно найти text
3. удалить целиком от <txt> и до</txt> в том числе что внутри.

так же ещё не могу понять как не заменяя каждый раз, удалить в реестре значение в параметре REG_MULTI_SZ тоже через bat.
Я так понимаю надо вначале найти, потом взять целиком значение, в нем найти, удалить, и после добавить.
вот только в коде не пойму как это реализовать. С простой заменой и удалением я вроде справился, а с этим затуп полный. Кучу времени потратил, а результат ноль.

P.S. Извините, если возможно такая тема была, не смог найти нужное решение своей проблемы.

DJ Mogarych 16-11-2022 09:24 2996592

CMD не предназначена для работы с XML. Используйте инструменты, которые умеют работать с этим типом данных.

Powershell:
Код:

$src = "D:\temp\input.xml"
$dest = "D:\temp\output.xml"
$toDel = "txt"

$xml = [xml](gc $src)
$nodes = $xml.SelectNodes("//$toDel")
foreach ($node in $nodes) {$node.ParentNode.RemoveChild($node) > $null}
$xml.Save($dest)


ivan456 16-11-2022 09:53 2996596

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

Цитата DJ Mogarych
CMD не предназначена для работы с XML. Используйте инструменты, которые умеют работать с этим типом данных.
$src = "D:\temp\input.xml"
$dest = "D:\temp\output.xml"
$toDel = "txt"
$xml = [xml](gc $src)
$nodes = $xml.SelectNodes("//$toDel")
foreach ($node in $nodes) {$node.ParentNode.RemoveChild($node) > $null}
$xml.Save($dest) »

в файле xml много такого в одну строку:
Скрытый текст
<txt>какой_то_text1_252.255.1</txt><txt>какой_то_text2_252.255.1</txt><txt>какой_то_text3_252.255.1</txt>

Нужно только удалить например <txt>какой_то_text1_252.255.1</txt>

ivan456 16-11-2022 12:20 2996607

А если его в txt переделать? это по сути txt только в xml формате
Цитата:

Цитата:

Цитата DJ Mogarych
CMD не предназначена для работы с XML »



megaloman 16-11-2022 12:27 2996610

ivan456, Либо заархивируйте Ваш файл, либо переименуйте его в .txt. Приложите его к сообщению. Надо видеть структуру файла и его кодировку. CMD с UTF скорее всего не отработает.

ivan456 16-11-2022 12:43 2996613

Он в ANSI. там ничего кроме того что я описал выше нет.
Единственное всё в одну строку и с <file>text.111.222_13</file>
Надо понимать что поиск не по полному названию идет, а по сокращению, да полное название известно, но каждый раз менять эти циферки напряжно будет.
Цитата:

Цитата:

Цитата megaloman
Либо заархивируйте Ваш файл, либо переименуйте его в .txt. Приложите его к сообщению. Надо видеть структуру файла и его кодировку. CMD с UTF скорее всего не отработает. »


При простом поиске текста в файле через cmd, пишет что слишком длинная строка. Обычно ищут строки, а тут как бы строка одна большая. Длинной в 78тыс знаков))

ivan456 16-11-2022 13:18 2996616

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


Время: 23:52.

Время: 23:52.
© OSzone.net 2001-