使用Perl和amp;以递归方式使用相同的权限/优先级复制文件和文件夹。 ROBOCOPY

时间:2016-08-01 09:08:52

标签: perl batch-file robocopy

我正在尝试通过ROBOCOPY将文件和文件夹(包括子文件夹)复制到目标文件夹(来自用户端)。但是,我无权在目标上创建文件夹。我有管理员用户名和密码。如何实现此代码以在此脚本或批处理文件中使用用户名/密码。 (不要认为“项目”来自用户)

use strict;
use warnings;
use Cwd;

while(1)
{
    print "Enter the project \& Destination Folder: ";
    my $input_rec = <STDIN>;
    chomp($input_rec);
    if($input_rec=~m/(exit|q|x)/i) {  exit;  }
    elsif(!$input_rec && $input_rec eq '') { }
    elsif($input_rec!~m/(\s|\t)/s) { }
    else
    {
        my ($dept, $dest) = split /\s/, $input_rec;
        print "DEPT: $dept\t$dest\n";
        system("ROBOCOPY \\\\server1\\Robo\\Source\\ISBN \\\\server2\\Robo\\Source\\ISBN /MIR /SEC /SECFIX");
        exit;
    }
}

或ELSE我需要使用perl脚本将文件和文件夹复制到目标文件夹而不使用ROBOCOPY,并使用管理员凭据,这是用户无法访问的。

任务是,如果用户请求admin创建一个文件夹/子文件夹,其权限/权限/结构与源原始文件一样,并且应由管理员创建,并由用户端创建请求的目标。每次管理员都不能这样做,因此我们尝试自动化这个过程。用户无法访问服务器以复制文件夹。

如果有人建议如何解决这个问题,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

你可以使用中间的东西。您可以使用用户的权限在Windows上创建计划任务。你应该创建为&#34;一次&#34;任务。您可以根据需要启动任意数量。

Task view User

您可以使用此命令从perl脚本调用。

SCHTASKS / RUN / TN&#34;任务名称&#34;

这是个主意。我希望这会有所帮助。

答案 1 :(得分:0)

my $source = "\\\\server1\\Robo\\Source\\ISBN";
print "DEPT: $dept\t$dest\n"; #$dest = "\\\\server2\\Robo\\Destination\\ISBN";
system("net use $source /user:.\\\\\administrator xxxx");
system("net use $dest /user:.\\\\administrator xxxx");
system("ROBOCOPY $source $dest /MIR /SEC /SECFIX");

上述行支持根据目标的实际权限复制文件和文件夹。希望这美好的一天!