2

我有一个小批量代码,它将可执行文件的许可证信息打印到文件version.txt中,并检查许可证是否为Product is licensed to MyOrg. 如果它们不相等,我会显式地抛出exit 1并失败构建,否则会回显变量的值。下面是工作代码。

@echo off
product_executable --version 1>version.txt 2>&1
FOR /F "SKIP=1 TOKENS=*" %%L IN (version.txt) DO set checkstr=%%L
del /q /f version.txt
if NOT "%checkstr%"=="Product is licensed to MyOrg" ( EXIT 1 ) else ( ECHO %checkstr% )

但是我需要的是,我不想将变量保存到文件中并从中读取行并删除文件,而是将其保存到环境变量中,并在Conditional Build Step插件license_info中访问它,例如. 但我无法这样做。${license_info}

4

3 回答 3

1

我不知道有任何直接的方法可以在 shell 脚本(或 Windows 批处理脚本)中创建环境变量并在以后的构建步骤中使用它。解决它的唯一方法是将信息写入属性文件,然后让下一个构建步骤读取属性文件。作为 smlstvnh,您需要使用EnvInject 插件来读取属性文件。我在一些构建中使用了这种繁琐的方法。

于 2013-10-22T18:24:04.277 回答
0

您应该可以批量执行此操作,从而无需编写文本文件...

@echo off
FOR /F "SKIP=1 TOKENS=*" %%L IN ('product_executable --version') DO set checkstr=%%L
if NOT "%checkstr%"=="Product is licensed to MyOrg" ( EXIT 1 ) else ( ECHO %checkstr% )

但是,如果您尝试完全删除批处理文件,这将无济于事。

于 2013-10-22T12:21:12.740 回答
0

我过去所做的是使用EnvInject 插件,并将key=value信息写入.properites格式化文件

java .properties 文件基本上只是

key_1=value_1
key_2=value_2
license_info=someinterestinglicenseinfo
key_n=value_n

字符串值不需要引号。

然后,使用插件,您可以引用该文件,可能写入您的${WORKSPACE},并以 la 的形式访问这些环境变量${license_info}

于 2013-10-22T15:25:09.243 回答