我有使用System()函数调用robocopy.exe的Perl代码,但看起来好像是在修改参数。我使用的是Chef,它通过Cygwin bundle 了Perl-“这是为msys-64int构建的perl v5.8.8。”
我认为Cygwin正在转义一些字符,但是system()不会告诉我它实际传递给shell的内容,因此我不知道如何正确格式化调用。
my $robocopyCmd = "robocopy.exe /a-:r /r:30 /w:10 c:/folder1 c:/folder2";
print "DEBUG: " . $robocopyCmd . "\n";
system($robocopyCmd);
DEBUG: robocopy.exe /a-:r /r:30 /w:10 c:/folder1 c:/folder2
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows :: Version XP010
-------------------------------------------------------------------------------
Started : Wed Jun 20 10:33:05 2012
Source - R:\30\
Dest - W:\10\
Files :
Options : /COPY:DAT /A-:R /R:1000000 /W:30
------------------------------------------------------------------------------
ERROR : Invalid Parameter #4 : c:/folder1
最佳答案
system($shell_cmd);
system($shell_cmd)
system('sh', '-c', $shell_cmd)
system('cmd', '/c', $robocopyCmd);
https://stackoverflow.com/questions/11125224/