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

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

Ответить
Настройки темы
PowerShell - Замена строки в файлах на powershell или bat

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


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

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


Привет всем. Искал по форумам то что нужно, но все не то что-то.
Есть папка лежит на диске С в корне ну допустим c:\123\.
В нее переодический с разными именами скидывают xml в файлы. В которых есть путь на таблицу стилей допустим http://yandex.ru/common.css. и на компе есть папка с:\css где лежат эти файлы .

Задача состоит в том чтобы заменить во всех xml строку с путем и открыть их.

Спасибо всем за помощь заранее . Ps можно конечно и на bat но как то устарело

Отправлено: 08:11, 02-10-2019

 

Ветеран


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

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


sap87@vk, хорошо, что вы что-то допускаете. А что если вам скажут, допустим XML может значения предоставлять не только между парой открывающих и закрывающих тэгов, но и в одиночном замыкающем тэге, что тогда? Как прикажете разбирать XML без примера с вашей стороны, ммм? Чтобы стало понятно:
Код: Выделить весь код
<?xml version="1.0"?>
<Root>
  <PairValue>https://some.domain.org/wipe_your_ass_with_sandpaper</PairValue>
  <SelfClosed Url="https://another.domain.org/do_your_dick_with_vacuum_cleaner" />
</Root>
Что касается бать, все не столько устарело, сколько велико ограничение на длину строки. Хотя никто и ничто не мешает разобрать XML посредством сторонних утилит, вроде xmlstarlet или sed.

Отправлено: 10:14, 02-10-2019 | #2



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

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


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


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

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


greg zakharov, xml приходит в одном формате но с разными имена ми и содержимым.
суть в чем к нему привязана таблица стилей она находиться в интернете. Те у кого есть фаил открывается норм. Соотвественно я слил таблицу стилей и выложил ее локально но файлы которые приходят надо переделывать. сейчас напишу шапку

Код: Выделить весь код
<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl"
href="https://portal.rosreestr.ru/xsl/EGRP/Reestr_Extract_Ods/07/Common.xsl"?><Extract>
соотвествено меняться будет https://portal.rosreestr.ru/xsl/EGRP.../07/Common.xsl на c:/rossreestr/css/Common.xsl

Отправлено: 11:34, 02-10-2019 | #3


Ветеран


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

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


В pwsh задача может быть решена так:
Код: Выделить весь код
$x = [xml](gc X:\path\input.xml)
$x.'xml-stylesheet' = $x.'xml-stylesheet' -replace '(href=\").+(/Common.xml\")', '$1c:/rossreestr/css$2'
$x.Save(X:\path\input.xml)
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:17, 02-10-2019 | #4


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


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

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


greg zakharov, как я понял надо будет xml фаил переименовывать в input

К сожалению ошибка
Код: Выделить весь код
PS C:\Users\086semenovap> C:\Users\086semenovap\Desktop\БезИмени1.ps1
Отсутствует ")" в вызове метода.
C:\Users\086semenovap\Desktop\БезИмени1.ps1:4 знак:9
+ $x.Save( <<<< C:\rossreestr\input2.xml)
​ ​ ​ ​ + CategoryInfo​ ​ ​ ​ ​ ​ ​ ​ ​ : ParserError: (CloseParenToken:TokenId)
[], ParentContainsErrorRecordException
​ ​ ​ ​ + FullyQualifiedErrorId : MissingEndParenthesisInMethodCall

Последний раз редактировалось sap87@vk, 03-10-2019 в 08:43.


Отправлено: 08:18, 03-10-2019 | #5


Ветеран


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

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


Цитата sap87@vk:
надо будет xml фаил переименовывать в input
Пардон, зачем? Вы же догадались, что X:\path всего-навсего пример пути, так и с XML - имя может быть любым. Что до выброшенного хостом pwsh исключения, там же четко написано: "нет парной закрывающей скобки". И кстати, при вызове метода Save имя файла, куда происходит сохранение, должно быть взято в кавычки (мой косяк). В смысле:
Код: Выделить весь код
...
$x.Save("X:\path\input.xml")

Отправлено: 09:30, 03-10-2019 | #6


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


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

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


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

А вторая проблема кодировка слетает
Скрытый текст


Последний раз редактировалось sap87@vk, 03-10-2019 в 11:03.


Отправлено: 10:40, 03-10-2019 | #7


Ветеран


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

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


sap87@vk, файлы в кодировке utf8, так что явно нужно задать:
Код: Выделить весь код
$x = [xml](gc X:\path\input.xml -enc utf8)
...
И будет вам счастье. Хотя можно автоматизировать распознавание кодировки для Get-Content (он же gc).
Что касается "цифер", разуметь шаблон имен по одному скриншоту выше моего черного пояса по телепатии. Вы бы описали задачу от и до. И, к слову, вы же госслужащий, судя по документообороту, вас приняли на работу за диплом или знания?
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:47, 03-10-2019 | #8


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


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

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


Знания. Просто пока некогда занятся изучением скриптовых языков. В работе требуется очень редко. Точнее почти некогда.

Отправлено: 12:51, 03-10-2019 | #9


Ветеран


Contributor


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

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


greg zakharov, сделайте ему так, чтобы можно было xml-файл мышкой на скрипт перетаскивать.

Отправлено: 19:34, 03-10-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Замена строки в файлах al-1k Скриптовые языки администрирования Windows 11 16-05-2017 13:42
Любой язык - Извлечение определенных файлов из нескольких архивов в .bat или PowerShell dmitry1026 Скриптовые языки администрирования Windows 0 03-02-2016 13:34
CMD/BAT - Поиск и замена строки в txt файлах по содержанию этой строки. sayyad Скриптовые языки администрирования Windows 1 06-12-2015 13:20
CMD/BAT - Замена строки в xml с помощью bat iieciiec Скриптовые языки администрирования Windows 14 06-02-2014 17:03
Интернет - Изменение параметров интернет подключения с командной строки или Powershell termikx Скриптовые языки администрирования Windows 5 14-10-2013 15:46




 
Переход