2017-04-12 6 views
1

バッチスクリプトに問題があります。私は時間&の時間を抽出しようとしていますが、コロンのために私に不完全な日付&時間を与えます。ここでXMLファイル.batがコロンで正しく動作しない

はスクリプトです:

@echo off 
setlocal EnableDelayedExpansion 

(for /F "tokens=1,2 delims=:<>" %%a, in ('findstr "xxxxxxxxxxxName=\"PHIL\" XXXXXXXX=\"Executive13\"" *.xml') do (
    set "list=%%b" 
    for /F "delims=" %%c in (^"!list: ^=^ 
% Do NOT remove this line % 
!^") do set %%c 
    if "!xxxxxxxxxxxName!+!XXXXXXXX!" equ ""PHIL"+"Executive13"" (
     echo File: "%%a", date=%%~ta", testDuration=!testDuration!, holidayCount=!holidayCount!, lockTime=!lockTime!" 
    ) 
)) > Outputfile.txt 
start notepad outputfile.txt 

時間は次のようにXMLファイルに日付されています( "lockTime" から抽出された):

<testInfo testDuration="57" holidayCount="0" completedtask="12" XXXXXXXXXXName="PHIL" testVersion="13" lockTime="2017-04-11T11:20:05" 
    <result testStepName="locating" sequenceNrResult="1" testStepResult="OK"> 
    etc. 
    </testInfo> 
</testresult> 

私はコロンでこの問題を解決するにはどうすればよいですか?

出力ファイルは、常に次のようになります。

lockTime="2017-04-11T08" 
+0

てみてください。 – Magoo

+0

私の推測では、最初のfor/f文のdelims = '句から': 'を削除するか、' date = %%〜ta:%%〜tb'を使う必要があります。これが当てはまらない場合は、XMLのコンテキストを増やすほうが助かります。 – rojo

+0

私の提案は、文字列操作のハックを捨て、実際にXMLを理解するツールを使用することです。 .batから実行されるxpathを持つxmllintのようなものは、より良い方法です。 –

答えて

2

for /fループでこれをキャプチャ:

powershell "([xml](gc xmlfile.xml)).SelectSingleNode('//*[@lockTime]').lockTime" 

...、それは最初のXMLノードからlockTime値をこすりますlockTime属性を含む。

+0

それは私のために働いてくれてありがとう:) – Zaynqx

1

は私たちに `findstr`コマンドからいくつかの未処理データ線を表示してくださいxpath.bat

call xpath.bat locktime.xml "//@lockTime" 
関連する問題