3

我有一个 Perl 程序,它执行如下操作:

#!/usr/bin/env perl    
use strict;
use warnings;

my $exe = "C:\\project\\set_env_and_run.bat";

my $arg1 = "\\\\Server\\share\\folder1";    
my $arg2 = "D:\\output\\folder1";

my $cmd = "$exe \"$arg1\" \"$arg2\"";    
my $status = system("$cmd > c:\\tmp\\out.txt 2>&1");

print "$status\n";

我在 eval 块中调用这个 Perl 代码。调用时,我将状态打印为 0,但批处理文件并未实际执行。这会是什么原因?上面编码的“系统”调用有任何问题吗?

谢谢, 吉茨

4

4 回答 4

1

你确定bat文件没有运行。我已经获取了您的代码,修复了我机器上不存在的路径。我让它调用批处理文件

echo In myrun  1=%1  2=%2

并将以下内容写入输出文件

 In myrun  1="\\Server\share\folder1"  2="D:\output\folder1"
于 2010-05-25T21:56:51.597 回答
1

您需要在双引号内转义反斜杠。

my $exe = "C:\\project\\set_env_and_run.bat";
...
my $status = system("$cmd > c:\\tmp\\out.txt 2>&1");
于 2010-05-25T18:47:15.893 回答
1

我会说你应该像这样定义exe:

my $exe = "cmd.exe /c C:\\project\\set_env_and_run.bat";
于 2013-05-12T16:27:03.410 回答
1

你可以使用

 system ("start C:\\project\\set_env_and_run.bat");
于 2014-07-22T07:18:58.523 回答