需要从perl脚本将变量传递给批处理脚本

时间:2015-08-31 08:59:02

标签: perl batch-file

我正在运行一个perl脚本,后者又调用批处理脚本。我需要将3个参数传递给批处理脚本。我正在传递参数,因为它更容易在perl脚本中读取文件&捕获所需的值。但是,我的脚本错误输出错误 - '系统找不到指定的路径。'

我正在使用下面的代码 -

while (<FILE>) 
{
    ($file, $rcc, $loc) = split(',');
    my @lines = qx/"D:\\SiebelAdmin\\Commands\\WinFile_Move.bat $file $rcc $loc" /;
}

3 个答案:

答案 0 :(得分:0)

删除双引号。使用它们,系统将整行解释为命令,而不是带参数的命令。

my @lines = qx/D:\\SiebelAdmin\\Commands\\WinFile_Move.bat $file $rcc $loc/;

答案 1 :(得分:0)

请检查这是否适合您。 我创建了一个示例批处理脚本,它带有两个args并在提示符下打印它。 此脚本位置位于桌面上。

批处理脚本代码

@echo off
set arg1=%1
set arg2=%2
shift
shift

echo %arg1%
echo %arg2%

批处理脚本的输出

C:\Users\Administrator\Desktop>a.bat perl5.8 perl5.18
perl5.8
perl5.18
C:\Users\Administrator\Desktop>

现在我已经创建了调用此批处理脚本的perl脚本。这个perl脚本存在于C盘中。

perl脚本代码

my $bat_file = 'C:\Users\Administrator\Desktop\a.bat';
my $arg1 = 'perl5.8';
my $arg2 = 'perl5.18';
my @lines = `$bat_file $arg1 $arg2`;
print @lines;

perl脚本的输出

C:\>perl tmp.pl
perl5.8
perl5.18

答案 2 :(得分:0)

你可以这样做:

Perl文件:

my $arg = "hey";
my $bat_file_loc = "C:\\abc.bat";
system($bat_file_loc,$arg); 

批处理文件:

set arg1=%1