我有一个小批量代码,它将可执行文件的许可证信息打印到文件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% )
但我需要的是,不是将变量保存到文件并从中读取行并删除文件,而是将其保存到环境变量license_info
并在{{3}中访问它像${license_info}
这样的插件。但我无法这样做。
答案 0 :(得分:1)
我不知道在shell脚本(或Windows批处理脚本)中创建环境变量的任何直接方法,并在稍后的构建步骤中使用它。绕过它的唯一方法是在属性文件中写出信息并让下一个构建步骤读取属性文件。作为smlstvnh,您需要使用EnvInject plugin来读取属性文件。我在一些构建中使用了这种繁琐的方法。
答案 1 :(得分: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% )
但是,如果您尝试完全删除批处理文件,这将无济于事。
答案 2 :(得分:0)
我过去所做的是使用EnvInject Plugin,并将key=value
信息写入a .properites
formatted file。
java .properties文件基本上只是
key_1=value_1
key_2=value_2
license_info=someinterestinglicenseinfo
key_n=value_n
字符串值不需要引号。
然后,使用该插件,您可以引用该文件,可能写入您的${WORKSPACE}
,并可以访问表格中的那些环境变量la ${license_info}