2012-05-28 3 views
1

Я хочу найти/заменить в нескольких текстовых файлах. Как автоматизировать это с помощью .BAT? (мне нужны регулярные выражения)Найти и заменить регулярным выражением (Batch .BAT)

Пример: Посмотрите на:

<ObjectList ObjectType="MyObject"> 
(anything here) 
</ObjectList> 

Затем удалите этот текст и заменить:

<ObjectList ObjectType="MyNewObject"> 
Blablabla 
Blablabla 
</ObjectList> 

Как сделать это с помощью .BAT сценария?

EDIT: У меня есть много файлов для поиска/замены, а некоторые из них не являются XML. Поэтому мне понадобится общее решение ... Какой самый простой способ сделать это (я не хочу устанавливать программное обеспечение третьей части). VBS или BATCH? Если у кого-то есть очень маленький примерный код, спасибо много заблаговременно! Спасибо!

ответ

1

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

ЗАКАНЧИВАТЬ XMLStarlet для командной строки на основе XML набора инструментов, и в частности ed команды, которая позволяет вы можете редактировать документы.

xml ed --help 
XMLStarlet Toolkit: Edit XML document(s) 
Usage: xml ed <global-options> {<action>} [ <xml-file-or-uri> ... ] 
where 
    <global-options> - global options for editing 
    <xml-file-or-uri> - input XML document file name/uri (stdin is used if missing) 

<global-options> are: 
    -P (or --pf)  - preserve original formatting 
    -S (or --ps)  - preserve non-significant spaces 
    -O (or --omit-decl) - omit XML declaration (<?xml ...?>) 
    -N <name>=<value> - predefine namespaces (name without 'xmlns:') 
         ex: xsql=urn:oracle-xsql 
         Multiple -N options are allowed. 
         -N options must be last global options. 
    --help or -h  - display help 

where <action> 
    -d or --delete <xpath> 
    -i or --insert <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value> 
    -a or --append <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value> 
    -s or --subnode <xpath> -t (--type) elem|text|attr -n <name> -v (--value) <value> 
    -m or --move <xpath1> <xpath2> 
    -r or --rename <xpath1> -v <new-name> 
    -u or --update <xpath> -v (--value) <value> 
       -x (--expr) <xpath> (-x is not implemented yet) 
+0

Привет, Спасибо за ваш ответ! На самом деле, у меня есть много файлов для поиска/замены, а некоторые из них не являются XML. Поэтому мне понадобится общее решение ... Какой самый простой способ сделать это (я не хочу устанавливать программное обеспечение третьей части). VBS или BATCH? Если у кого-то есть очень маленький примерный код, спасибо много заблаговременно! – Basj

4

Использование регулярных выражений с помощью класса VBScript.RegExp для VBScript.

Например:

@ECHO OFF 
(
    ECHO Set Regex = CreateObject^("VBScript.RegExp"^) 
    ECHO Regex.Pattern = "[E-G]$" 
    ECHO MsgBox^(Regex.Replace^("A B C D E", "X"^)^) 
) > Regex.vbs 
CSCRIPT //NOLOGO Regex.vbs 
DEL Regex.vbs 
PAUSE > NUL 

Код выше будет выведено сообщение "A B C D X".

Я надеюсь, что я помог.

+0

Хорошо, используя скрипт для создания скрипта, который решает проблему. –

Смежные вопросы