【发布时间】:2017-10-07 03:58:55
【问题描述】:
我正在尝试使用 Perl 脚本将 Jenkins 工件发送到共享驱动器构建后活动,但在下面的代码中,%versionName% 值已设置为批处理脚本中的环境变量。
我不知道如何将环境变量传递给 Perl 脚本。我得到了输出Motiv_Android__V_%versionName%,但我期待Motiv_Android__V_1.X.X.X。
%versionName% 的值为1.X.X.X。
use warnings;
use File::Copy;
use File::Copy::Recursive qw (dircopy);
my $source_dir = 'C:\test';
my $target_dir = 'Z:\main\term\ban\test';
my $artifact_dir = 'C:\Users\lavana\Projects\MyApplication\';
my ( %versionName ) = @ARGV;
$Artifact_name = "Motiv_Android_\_V\_%versionName%";
print "artifact $Artifact_name\n";
mkdir $Artifact_name;
opendir( my $DIR, $source_dir ) || die "can't opendir $source_dir: $!";
my @files = readdir( $DIR );
foreach my $t ( sort grep( /^.*\.apk$/, @files ) ) {
if ( "$source_dir/$t" ) {
copy "$source_dir/$t", "./$Artifact_name/$t"
dircopy("$artifact_dir/$Artifact_name","$target_dir/$Artifact_name");
}
}
closedir($DIR);
【问题讨论】:
-
要缩进代码,你按制表符不返回:P
-
您显示的代码不是您的真实程序。字符串
'C:\Users\lavana\Projects\MyApplication\'转义了结束单引号,从而产生一个多行字符串,该字符串以"can't opendir $source_dir: $!"中的撇号结尾,并使您的其余代码变得无意义。如果您需要帮助解决您的问题,那么最好不要对我们撒谎。请发布您的真实代码。
标签: perl batch-file jenkins