私はバッチ スクリプトを作成する初心者であり、これに関するあなたの助けには非常に感謝しています。
以下はxmlで、フラグが「オン」になっているすべての名前をtxtファイルに抽出する必要があります。他にもいくつかのカテゴリ タグ インスタンスがあります。
<Head>
<Category
name="RIVERTD"
flag="on"
location="SG002">
</Category>
<Category
name="BRETRED"
flag="on"
location="IT213">
</Category>
<Category
name="AMERAND"
flag="off"
location="US212">
</Category>
</Head>
だから、私が探している出力は以下のとおりです
RIVERTD
BRETRED
以下のコードを使用してみました
@echo off
setlocal disableDelayedExpansion
set input="CP.xml"
set output="Names.txt"
if exist %output% del %output%
for /f "delims=" %%A in ('findstr /n /c:"name=" %input%') do (
set "ln=%%A"
setlocal enableDelayedExpansion
call :parseLine
endlocal
)
type %output%
exit /b
:parseLine
set "ln2=!ln:*name=!"
if "!ln2!"=="!ln!" exit /b
for /f tokens^=2^ delims^=^" %%B in ("!ln2!") do (
setlocal disableDelayedExpansion
>>%output% echo(%%B
endlocal
)
set "ln=!ln2!"
goto :parseLine
これで結果が得られます
RIVERTD
BRETRED
AMERAND
ただし、このコードはフラグに基づいて名前をフィルタリングしません。私は初心者です。フラグに基づいてフィルターを追加するのを手伝ってください。どうもありがとう。