XML输出无法识别

时间:2015-07-29 17:52:16

标签: xml batch-file

我有一个监视许可证使用情况并以XML格式写入文件的实用程序,但问题是它还在XML文件中写入文本格式,因此在将此文件添加到访问或Excel中以进行进一步报告时,它不会将输出文件识别为XML文件。

以下是我作为批处理文件的一部分运行的命令,该批处理文件每小时运行一次,因此每次都会附加输出。

slmcmd -montts prod-sql -port 6005>> C:\ TEMP \ license_usage.xml

输出就像这样..

从许可证服务器检索监控数据。     许可证服务器主机:prod-sql     许可证服务器端口:6005     监控类型:总计

结果:

`<?xml version="1.0"?>
<totals
    date="Wed Jul 29 19:38:24 2015"
    host="prod-sql.eohcorp.net"
    port="6005"
    udpPort="6005"
    mode="master">
    <desktopLicense
        count="0"
    />
    <concurrentLicense
        count="9">
        <product
            id="7114"
        />
        <product
            id="7115"
        />
        <product
            id="7116"
        />
        <product
            id="7117"
        />
        <product
            id="7118"
        />
        <product
            id="10056"
            count="12"
        />
        <product
            id="10365"
        />
        <product
            id="10896"
            count="0"
        />
        <product
            id="10996"
            count="81"
        />
    </concurrentLicense>
    <userLicense
        count="0"
    />
    <serverLicense
        count="2">
        <product
            id="7056"
            count="16"
        />
        <product
            id="10146"
        />
    </serverLicense>
</totals>`

所以,前6行和最后一行不是XML格式,我可以搜索和删除这些行,但我正在寻找一种从输出中删除这些行的有效方法。

谢谢, 巴拉吉

1 个答案:

答案 0 :(得分:0)

理想情况下,该命令应生成正确的XML。如果无法修复它,并且您需要使用批处理文件解决方法,请尝试(假设根元素始终为“总计”):

slmcmd -montts prod-sql -port 6005 >> C:\temp\license_usage.txt
REM Pick everything except lines containing "`<" or ">`"
findstr /v /C:"`<" /v /C:">`" license_usage.txt > license_usage.xml
REM Append closing root element
echo ^</totals^>>> license_usage.xml