0

XML ファイル (file_1.xml および file_2.xml) を読み取り、タグ間の文字列を抽出して TXT ファイルに書き出すコードを以下に記述しました。問題は、一部の文字列に二重引用符が含まれており、プログラムがこれらの文字を (文字列の一部ではなく) 適切な命令として受け取ることです...

file_1.xml の内容:

<AAA>C086002-T1111</AAA>
<AAA>C086002-T1222 </AAA>
<AAA>C086002-TR333 "</AAA>
<AAA>C086002-T5444  </AAA>

file_2.xml の内容:

<AAA>C086002-T5555 </AAA>
<AAA>C086002-T1666</AAA>
<AAA>C086002-T1777 "</AAA>
<AAA>C086002-T1888          "</AAA>

私のコード:

@echo off

setlocal enabledelayedexpansion

for /f "delims=;" %%f in ('dir /b D:\depart\*.xml') do (

    for /f "usebackq delims=;" %%z in ("D:\depart\%%f") do (

        (for /f "delims=<AAA></AAA> tokens=2" %%a in ('echo "%%z" ^| Findstr /r "<AAA>"') do (

            set code=%%a
            set code=!code:""=!
            set code=!code: =!
            echo !code!

        )) >> result.txt
    )
)

私はこれを result.txt に入れます:

C086002-T1111
C086002-T1222
C086002-T5444
C086002-T5555
C086002-T1666

実際、8 行のうち 3 行が欠落しています。これらの行には二重引用符が含まれているか、二重引用符を含む行が続きます...

これらの文字をどのように処理し、文字列の一部と見なすことができますか?

4

2 に答える 2

0

@dbenham の提案を保持し、ファイル名をエコーするためにそれを完了する場合:

@echo off
>result.txt (
    for /f %%f in ("D:\depart\*.xml") do (
        for /f "delims=<> tokens=3" %%A in ('findstr /r "<AAA>.*</AAA>" "D:\depart\*.xml"') do (
             for /f delims^=^"^  %%B in ("%%A") do (
               echo %%B;%%f
             )
         )
     )
 )

このコードについてご意見をお寄せいただきありがとうございます。

于 2014-11-04T10:18:10.603 に答える