如何编写批处理脚本来读取某个远程位置可用的xml文件的内容,并根据其值触发构建

时间:2015-02-25 12:37:15

标签: xml batch-file jenkins xml-parsing

我有一个名为test.xml的XML文件,可以在@ \ mymachine \ test下找到。内容如下所示。

<root><node1 component="component1" status="ToBeInstalled" />
<node2 component="component2" status="Installed" />
<node3 component="component3" status="ToBeInstalled" /></root>

现在我想写一个批处理脚本,它将从path \ mymachine \ test中读取这个test.xml并触发一个构建,如果对于任何组件(component1,component2,component3)状态是&#34; ToBeInstalled&# 34 ;.我将使用&#34; Script Trigger&#34;触发类型来实现这一点。但是你可以帮忙写一个批处理脚本吗?我是批处理脚本的新手。

1 个答案:

答案 0 :(得分:0)

这个小批量文件搜索字符串 ToBeInstalled ,如果在文件中的任何位置找到字符串,则使用命令echo输出一行。

@echo off
%SystemRoot%\System32\find.exe /C "ToBeInstalled" \mymachine\test\test.xml >nul
if not errorlevel 1 echo Trigger script as ToBeInstalled is found in XML file.

我不知道触发脚本的必要条件。

备用批次代码:

@echo off
%SystemRoot%\System32\findstr.exe /M /C:ToBeInstalled \mymachine\test\test.xml >nul
if not errorlevel 1 echo Trigger script as ToBeInstalled is found in XML file.

此代码使用 findstr 而非查找,它比查找更强大,对命令行语法的限制更少。

在命令提示符窗口中运行以下命令以获得其他帮助:

  1. if /?
  2. find /?
  3. findstr /?
  4. 如果在文件中找不到字符串,则控制台应用程序findfindstr退出并返回代码1分配给 errorlevel 。否则返回码为0。

    if not errorlevel 1表示不是大于或等于1,换句话说小于1,即等于0为find,而findstr则以负数退出。