Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML文件.bat提取由于冒号而无法正常工作_Xml_Batch File - Fatal编程技术网

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"