2

複数のテキストファイルで検索/置換を行いたい。これを .BAT で自動化する方法は? (正規表現も必要です)

例: 次を探します。

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

次に、このテキストを削除して、次のように置き換えます。

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

.BAT スクリプトでこれを行う方法は?

編集:検索/置換するファイルがたくさんあり、そのうちのいくつかは XML ではありません。したがって、一般的な解決策が必要になります...それを行う最も簡単な方法は何ですか(サードパーティのソフトウェアをインストールしたくありません)。VBS またはバッチ ? 誰かが非常に小さなコード例を持っている場合は、事前に感謝します! ありがとう!

4

2 に答える 2

4

VBScript の VBScript.RegExp クラスを介して正規表現を使用します。

例えば:

@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

上記のコードは、「ABCD X」というメッセージを表示します。

お役に立てば幸いです。

于 2012-05-28T20:41:55.290 に答える
1

あなたはXMLを操作しているので、エンコーディングやエンティティなどを維持するためにXML固有のものを使用します.

コマンド ライン ベースの XML ツールセット、特にドキュメントを編集できるコマンドについては、 XMLStarletを確認してください。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)
于 2012-05-28T16:36:47.423 に答える