我有一个监视许可证使用情况并以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格式,我可以搜索和删除这些行,但我正在寻找一种从输出中删除这些行的有效方法。
谢谢, 巴拉吉
答案 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