Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Поиск и удаление через bat

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


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

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


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

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

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

Отправлено: 08:39, 16-11-2022

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


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)

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:24, 16-11-2022 | #2



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

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


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


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

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


Не работает код, сохраняет новый файл, но уже разбивает по строкам.
Цитата 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>

Отправлено: 09:53, 16-11-2022 | #3


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


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

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


А если его в txt переделать? это по сути txt только в xml формате
Цитата:
Цитата DJ Mogarych:
CMD не предназначена для работы с XML »

Отправлено: 12:20, 16-11-2022 | #4


Ветеран


Contributor


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

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


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 12:27, 16-11-2022 | #5


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


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

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


Он в ANSI. там ничего кроме того что я описал выше нет.
Единственное всё в одну строку и с <file>text.111.222_13</file>
Надо понимать что поиск не по полному названию идет, а по сокращению, да полное название известно, но каждый раз менять эти циферки напряжно будет.
Цитата:
Цитата megaloman:
Либо заархивируйте Ваш файл, либо переименуйте его в .txt. Приложите его к сообщению. Надо видеть структуру файла и его кодировку. CMD с UTF скорее всего не отработает. »
При простом поиске текста в файле через cmd, пишет что слишком длинная строка. Обычно ищут строки, а тут как бы строка одна большая. Длинной в 78тыс знаков))

Последний раз редактировалось ivan456, 16-11-2022 в 13:13.


Отправлено: 12:43, 16-11-2022 | #6


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


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

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


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

Отправлено: 13:18, 16-11-2022 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск файлов и их переименовка через bat-файл loviii Скриптовые языки администрирования Windows 8 12-12-2018 22:07
CMD/BAT - CMD/BAT Поиск по каталогам файлов bat и конвертирование их в JPEG freerider1989 Скриптовые языки администрирования Windows 1 18-04-2016 08:37
CMD/BAT - [решено] Поиск файла, перемещение, удаление исходной папки cmd\bat KitsuNeko Скриптовые языки администрирования Windows 5 08-04-2013 18:21
CMD/BAT - Поиск и замена текста через bat Lilless Скриптовые языки администрирования Windows 0 28-02-2012 02:08
CMD/BAT - [решено] Поиск на компьютере изображений через bat river123 Скриптовые языки администрирования Windows 4 13-08-2010 22:15




 
Переход