下面的代码获取serverFile文件中列出的每个服务器的xml数据输出,并以csv格式获取所需标记值作为输出,并将所需标记名称作为标题。 我试图达到以下要求,使代码更通用/输出格式可读,即,使用批处理脚本在输出csv文件中获取服务器详细信息
a。使IPADDRESS参数化的话,可以在wget的线反过来这可以为所有的服务器上运行使用server_variable这是目前在serverFile
.\bin\wget64.exe -OC:\output.xml http://11.12.13.15/xmldata?get=AllRecord 在上面的代码行
,我想使ip地址参数化类似的读取服务器信息并将其保存在变量即服务器中,因此,在上面的IP地址的位置我们可以使用%server%这样的:
b。第二点是,在当前的结果CSV文件中,获取所有必需的标签/值的CSV格式,但不知何故想包括IP地址以及头名称作为服务器,我被建议使用一个更多的循环,我做了尝试,但couldn “吨得到下SERVER标题名称
代码serverFile的内容:
@Echo Off
setlocal enabledelayedexpansion
set serverFile="C:\serverlist.txt"
set inFile="C:\output.xml"
set outFile="C:\output.csv"
if exist %outFile% del %outFile%
rem set the header line
set req_tags=SN,UUID,PN,TYPE
set outLine=
echo SN,UUID,PN,TYPE > %outFile%
for /f "tokens=*" %%f in (%serverFile%) do (
set serverIP=%%f
echo --------- !serverIP! ------------------
rem pause
.\bin\wget64.exe -OC:\output.xml http://11.12.13.15/xmldata?get=AllRecord
rem .\bin\wget64.exe -OC:\output.xml http://!serverIP!/xmldata?get=AllRecord
for %%a in (%inFile%) do (
for %%c in (%req_tags%) do (
set search_tag=%%c
for /f "tokens=2 delims=>< " %%b in ('type "%%a" ^|findstr /i !search_tag!') do (
if [%%b] NEQ [] (
rem we don't want to match /BSN
if [%%b] NEQ [/BSN] (
set outline=!outline!%%b,
)
)
)
)
)
)
rem output the values
rem remove trailing ,
set outline=%outline:~0,-1%
echo %outline%>>"%outFile%"
endlocal
output.csv内容:
SERVER,SN,UUID,PN,TYPE
Pro Gen8,Pro Gen8,ILD9V,IDC21E,Inte 4,Admin
在上面的输出,下SERVER头,应该得到服务器的IP地址但目前正在获得serverFile和。的完整路径不是它的内容。
然后在UUID头下,xml文件在不同的父项下有2个UUID标签,所以在输出文件中,两个UUID的下一个都是相邻的,这又将下一个头的输出移动,即PN,TYPE错误分配。不确定我们是否可以有一些子函数,在这些函数中我们可以将reg_tag和父标记(查找)作为参数,因此函数只会得到一个结果。
2016-08-02
HULK