javascript 使用批处理脚本捕获特定数据

pgvzfuti  于 11个月前  发布在  Java
关注(0)|答案(2)|浏览(73)

嗨,所以我需要帮助,我如何可以从多个XML文件中获取特定的数据,并把它放在变量或到一个列表。
下面是示例XML。

avwztpqn

avwztpqn1#

如果所有文件中只有一行<Passed>true|false</Passed>,那么解决方案非常简单:

@echo off
for %%f in (*.xml) do for /F "tokens=3 delims=<>" %%a in ('findstr "Passed" "%%f"') do echo %%f: %%a

字符串
如果有多个Passed行,而你想要<TestResults index="Sensor1">行之后的那一行,那么使用这个方法:

@echo off
setlocal

rem Process all *.xml files
for %%f in (*.xml) do (

   rem Get the line number of "TestResults index=Sensor1"
   for /F "delims=:" %%i in ('findstr /N /C:"TestResults index=\"Sensor1\"" "%%f"') do (

      rem Show the result from first "Passed" line after "TestResults"
      set "first="
      for /F "delims=:<> tokens=1,4" %%a in ('findstr /N "Passed" "%%f"') do (
         if not defined first  if %%a gtr %%i (
            echo %%f: %%b
            set "first=True"
         )
      )

   )
)

9rygscc1

9rygscc12#

@ECHO OFF
SETLOCAL
rem The following settings for the source directory and filename are names
rem that I use for testing and deliberately include names which include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.

SET "sourcedir=u:\your files"
SET "filename1=%sourcedir%\xmldata.xml"
SET "index="

FOR /f "usebackqtokens=1,2delims=<> " %%g IN ("%filename1%") DO (
 IF DEFINED index IF "%%g"=="Passed" SET "passed=%%h"
 IF DEFINED index GOTO done
 IF "%%g"=="TestResults" SET %%h
)

:done
IF DEFINED passed (ECHO FOR %index% - %passed%) ELSE (ECHO NOT found)

GOTO :EOF

字符串

在应用于真实的数据之前,始终根据测试目录进行验证。

请注意,如果文件名不包含分隔符(如空格),则可以省略usebackq%filename1%周围的引号。
读取文件,使用<>空格作为分隔符标记每一行。选择前2个标记%%g%%h
如果第一个标记是“Testresults”,则执行set %%h%%h将是index="something",因此变量index将被设置为"something"
如果已经设置了index,并且第一个标记是Passed,则将passed设置为第二个标记,然后退出。
如果已设置index,但下一行的第一个标记不是Passed,则退出(假定为错误情况)
报告结果。

相关问题