Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过perl脚本执行多个命令_Perl_Command Line - Fatal编程技术网

如何通过perl脚本执行多个命令

如何通过perl脚本执行多个命令,perl,command-line,Perl,Command Line,我正在尝试使用perl运行两个不同的命令—这两个命令都需要在单独的命令提示符中执行 以下是一些细节: 当我跑的时候 system('start cmd /k "cd c:\PerlExamples && perl Perl_Ex_1.pl"'); 它按预期工作-它打开一个新的命令提示符,指向我需要的目录的路径,并运行我的脚本 但是,我想使用这个系统。。。循环中的命令,每次运行不同的示例脚本时。 但当我运行以下代码行时 my $cmd = "perl Perl_Ex_1.pl";

我正在尝试使用perl运行两个不同的命令—这两个命令都需要在单独的命令提示符中执行

以下是一些细节:

当我跑的时候

system('start cmd /k "cd c:\PerlExamples && perl Perl_Ex_1.pl"');
它按预期工作-它打开一个新的命令提示符,指向我需要的目录的路径,并运行我的脚本

但是,我想使用这个系统。。。循环中的命令,每次运行不同的示例脚本时。 但当我运行以下代码行时

my $cmd = "perl Perl_Ex_1.pl";
system("start cmd /k cd c:\PerlExamples && $cmd");
它会打开一个新的命令提示符和我需要的目录路径。但它在原始窗口中运行我的示例脚本,而不是在新打开的命令提示符中运行

我有办法做到这一点吗


谢谢。

多亏了perl僧侣们的智慧,我找到了问题的解决方案

链接到解决方案:

解决方案是使用:

my $cmd = "perl Perl_Ex_1.pl";
system(qq{start cmd /k "cd c:\\PerlExamples && $cmd"});
或使用:

my $cmd = "perl Perl_Ex_1.pl";
system qq[ start /D c:\\PerlExamples cmd /k  $cmd ];

谢谢。

你试过用
/c
代替
/k
吗?我现在无法测试(没有可用的窗口)。或者尝试不使用
start
。问题是我需要保持该窗口打开,而不是关闭它。可能是因为在第二个命令中,`cd c:\PerlExamples&&$cmd`周围没有引号?@user2243865如果我在其周围加上引号,它会将$cmd视为字符串的一部分,而不是变量。