XMLファイルがあり、必要なタグ値を抽出し、結果をタグ名付きのcsvファイルに出力する必要があります。xmlファイルからタグ値を取得し、バッチスクリプトを使用して結果をcsvファイルに保存します。
これまでXMLタグと値を取得しようとしましたが、すべての結果が表形式のように1列に表示されます。
xmlファイルの内容(部分ファイルの内容):
<RSP>
<HSI>
<SN>CZ9V </SN>
<SP>Pro Gen8</SP>
<UUID>C9V</UUID>
</HSI>
<STP>3</STP>
<cUUID>343-11</cUUID>
<NICS>
<NIC>
<PORT>1</PORT>
<MACADDR>01:51:f2</MACADDR>
</NIC>
<NIC>
<PORT>1</PORT>
<MACADDR>00:17</MACADDR>
</NIC>
<NIC>
<PORT>2</PORT>
<MACADDR>77:28:02</MACADDR>
</NIC>
<NIC>
<PORT>3</PORT>
<MACADDR>00:04</MACADDR>
</NIC>
<NIC>
<PORT>4</PORT>
<MACADDR>00:06</MACADDR>
</NIC>
</NICS>
</RSP>
出力はoutput.csvファイルから取得しています:
SN,SP,UUID,MACADDR,cUUID
CZ9V
Pro Gen8
C9V
01:51:F2 343から11
何私は取得しようとしていた:
SN,SP,UUID,MACADDR,cUUID
CZ9V,Pro Gen8,C9V,01:51:f2,343-11
スプレッドシートでoutput.csvを開くと、フィルタオプションを使用して必要に応じてフィルタリングすることが簡単にできます。
コードは、これまでに取得するために午前:
echo SN,SP,UUID,MACADDR,cUUID> %outFile%
set req_tags=SN SP UUID MACADDR cUUID
for %%a in (%inFile%) do (
for %%c in (%req_tags%) do (
set "found="
set search_tag=%%c
for /f "tokens=2 delims=>< " %%b in (' type "%%a" ^|findstr /i !search_tag! ') do set found=%%b
if defined found >> "%outFile%" echo !found!
)
)
はoutput.csvファイルにそれぞれのタグ名の下にタグvlaueを取得する必要があります。
提案されている出力は、CSVとは全く異なる固定幅のテキストファイルです。 – dbenham
それを得ました。私はここに期待される出力をフォーマットするべきではありません。 – HULK