Как искать и заменять строку в нескольких xml-файлах (внутри каталога) с помощью Windows CMD

Может ли кто-нибудь помочь мне, предложив пакетный скрипт найти строку «utf-16» в нескольких xml-файлах в каталоге и заменить ее на «utf-8». Без использования инструментов поиска и замены. Замена должна выполняться в существующем файле.

Используйте любой XSLT-процессор. Например, msxsl.

Утилита преобразования командной строки

MSXML 4.0 с пакетом обновления 2 (основные службы Microsoft XML)

zero.xsl – преобразование таблицы стилей test.xml в test2.xml

<xsl:output method="xml" encoding="UTF-8" /> конвертировать xml в UTF-8.

 Zeroxml test.xml 

Zeroxml.cmd:

 @echo off @set name=%1 msxsl.exe %name% zero.xsl -o %name:~0,-4%2.xml 

zero.xsl:

 <!-- The Identity Transformation --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- <xsl:output method="html" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/> --> <xsl:output method="html" media-type="application/vnd.ms-excel" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/> <!-- <xsl:output omit-xml-declaration="no" indent="yes" encoding="UTF-8" method="html" /> --> <!-- <xsl:output method="xml" media-type="application/vnd.ms-excel" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/> --> <!-- <xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/> --> <!-- <xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/> --> <!-- Whenever you match any node or any attribute --> <xsl:template match="node()|@*"> <!-- Copy the current node --> <xsl:copy> <!-- Including any attributes it has and any child nodes --> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="*|@*|comment()| processing-instruction()|text()"> <xsl:copy> <xsl:apply-templates select="*|@*|comment()| processing-instruction()|text()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 

Way2, конвертировать UTF-16 в командную строку UTF-8:

Unicode – порядок байтов младшего порядка UTF-16.

 powershell gc test.xml -encoding Unicode^|sc testUTF8.xml -encoding UTF8 

BigEndianUnicode – формат байтового байта формата UTF-16.

 powershell gc test.xml -encoding BigEndianUnicode^|sc testUTF8.xml -encoding UTF8 

Преобразование всех файлов xml UTF-16 в каталог SourceDirXML и подкаталог UTF-8

 powershell $in='C:\SourceDirXML';$out='C:\OutputUTF8XML\';ls -Fo -r $in -Fi *.xml^|%{(gc $_.FullName -encoding Unicode^|sc ($out+$_.Name) -encoding UTF8)} 

Найдите и замените строку в нескольких файлах xml (внутри каталога) с помощью Windows CMD:

 powershell $in='C:\SourceDirXML';$out='C:\OutputUTF8XML\';ls -Fo -r $in -Fi *.xml^|%{(gc $_.FullName^|%{$_ -replace 'oldstring','newstring'}^|sc ($out+$_.Name) -encoding UTF8)} 
  • Набирает% ^ в cmd.exe пасхальное яйцо Windows?
  • Выбор прямоугольного текста в командной строке
  • Как скопировать все файлы определенного типа в папку из командной строки?
  • Команда echo на окнах CMD спросит меня, хочу ли я больше
  • Как запустить процесс в фоновом режиме, не открывая пакетный файл?
  • Пакет для открытия файлов с тем же расширением в подпапках в Windows
  • Hilight / выберите файл с пакетным скриптом
  • Есть ли команда, которая позволяет мне установить предпочтительный IP-адрес для адаптера?
  • Поиск нескольких расширений файлов в окне командной строки
  • Командный файл ест процессор и оперативную память, используя только echo ^?
  • Grep эквивалент для Windows 7?
  • Давайте будем гением компьютера.