我正在运行一个perl脚本,后者又调用批处理脚本。我需要将3个参数传递给批处理脚本。我正在传递参数,因为它更容易在perl脚本中读取文件&捕获所需的值。但是,我的脚本错误输出错误 - '系统找不到指定的路径。'
我正在使用下面的代码 -
while (<FILE>)
{
($file, $rcc, $loc) = split(',');
my @lines = qx/"D:\\SiebelAdmin\\Commands\\WinFile_Move.bat $file $rcc $loc" /;
}
答案 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盘中。
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;
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