XML文件.bat提取由于冒号而无法正常工作
我的批处理脚本有问题。我试图提取时间和日期,但由于冒号,它给了我一个不完整的日期和时间 以下是脚本:XML文件.bat提取由于冒号而无法正常工作,xml,batch-file,Xml,Batch File,我的批处理脚本有问题。我试图提取时间和日期,但由于冒号,它给了我一个不完整的日期和时间 以下是脚本: @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
@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
使用
for/f
循环捕获此信息:
powershell”([xml](gc-xmlfile.xml)).SelectSingleNode('//*[@lockTime]').lockTime“
。。。这将从包含lockTime
属性的第一个XML节点中刮取lockTime
值
请从
findstr
命令中显示一些未处理的数据行。我猜您需要从/f语句的delims=
子句中删除:
,或者使用date=%%~ta:%%~tb
。如果不是这样的话,更多的XML上下文可能会有所帮助。我的建议是放弃字符串操作,使用真正理解XML的工具。像xmllint这样的东西,从.bat运行xpath会更好。@DanielHaley OP可能还可以在PowerShell中使用[xml]
类型加速器,甚至不必麻烦第三方可执行文件。类似于powershell”([xml](gc-xmlfile.xml))。选择SingleNode('/*[@lockTime]')。lockTime“
,假设lockTime
是元素属性而不是文本节点。@rojo-非常好!(我不是powershell用户,所以感谢分享。)如果这是一个答案,我会投赞成票。
<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"
call xpath.bat locktime.xml "//@lockTime"