2016-08-02 16 views
0

以下のコードは、serverFileファイルにリストされている各サーバのxmlデータ出力を取得し、必要なタグ名をヘッダとして必須のタグ値をcsv形式で出力します。 コードをより一般的なものにするために以下の要件を達成しようとしています/出力形式は、つまりバッチスクリプトを使用して出力csvファイルのサーバ詳細を取得

aです。そのパラメータ化IPアドレスを作り、これは上記のコード行にserverFile

.\bin\wget64.exe -OC:\output.xml http://11.12.13.15/xmldata?get=AllRecord 

に存在するすべてのサーバに対して実行することができ、私はIPアドレスのようなものをパラメータ化することを考えていたのwgetラインにし、順番にserver_variableを使用することができますサーバ情報を読み込んで変数に保存します。つまり、サーバ上の上記の行のIPアドレスの場所に%server%を使用します。

。\ bin \ wget64.exe -OC:\ output.xml http://%server%/xmldata?get=AllRecord

b。 2番目のポイントは、現在の結果のcsvファイルで、csv形式で必要なすべてのタグ/値を取得していますが、何とかIPアドレスとSERVERというヘッダ名を追加したかったので、もう1つループを使用するように提案されました。

@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内容::「Tは、コード

SERVERヘッダ名の下

をserverFileのコンテンツを取得する上記の出力で

SERVER,SN,UUID,PN,TYPE 
Pro Gen8,Pro Gen8,ILD9V,IDC21E,Inte 4,Admin 

、SERVERヘッダの下で、サーバーのIPアドレスを取得する必要があります現在はserverFileのフルパスを取得しています。そうではありません。

UUIDヘッダーの下では、xmlファイルには異なる親の下に2つのUUIDタグがあります。そのため、出力ファイルでは両方のUUIDを隣り合わせに取得しています。私たちがreg_tagと親タグ(探しているもの)を引数として与えることができる部分関数を持つことができるかどうかわからないので、関数はただ1つの結果しか得ません。あなたは一貫性delayed expansionを使用している

答えて

0

  1. ECHO is off.echo %ip% >> %outFile%から来ている:
    • echo !ip! >> %outFile%
  2. である必要があり、すべての*,=call :outputlinetocsv "%hLine%"から来る:
    • は、どちらかが
    • for %%a in (!req_tags!) do (をする必要がありますcall :outputlinetocsv "!hLine!"
  3. for %%a in (%req_tags%) do (
    • あるべきか、すなわち前にそれをfor %%a in (%req_tags%) do (を保つが、set "req_tags=SP PN TYPE"のうち%%xループを定義することができます。
+0

ご提案をお寄せいただきありがとうございますが、私はinitally間違ったコードを使用していました。正しいコードと要約で元の投稿を更新しました。再度、感謝します。 – HULK

関連する問題