Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.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
关于“中答案中的代码”的后续问题1;PowerShell中的自定义Robocopy进度条“;_Powershell_Robocopy - Fatal编程技术网

关于“中答案中的代码”的后续问题1;PowerShell中的自定义Robocopy进度条“;

关于“中答案中的代码”的后续问题1;PowerShell中的自定义Robocopy进度条“;,powershell,robocopy,Powershell,Robocopy,我知道一些PowerShell,但我不是PowerShell的高手。我有一个关于答案中列出的代码的问题 我的后续问题是:如何调整此脚本以运行几个连续的robocopy命令 我需要将来自不同来源和不同目的地的不同驱动器的文件镜像到我的便携式USB3驱动器 谢谢你的帮助 Kevin您可以使用PowerShell作业同时运行多个robocopy作业。有关详细信息,请运行: Get-Help -Name about_Jobs; 或者,只需多次调用Start Process,并省略-Wait参数 Get

我知道一些PowerShell,但我不是PowerShell的高手。我有一个关于答案中列出的代码的问题

我的后续问题是:如何调整此脚本以运行几个连续的robocopy命令

我需要将来自不同来源和不同目的地的不同驱动器的文件镜像到我的便携式USB3驱动器

谢谢你的帮助


Kevin

您可以使用PowerShell作业同时运行多个robocopy作业。有关详细信息,请运行:

Get-Help -Name about_Jobs;
或者,只需多次调用
Start Process
,并省略
-Wait
参数

Get-Help -Name Start-Process -Full;
以下是如何启动几个PowerShell后台作业并从所有这些作业返回状态的示例:

# Define a ScriptBlock that does some "work"
# NOTE: ScriptBlock should output an integer that indicates percentage complete
$ScriptBlock = {
    1..100 | % { $_; Start-Sleep -Milliseconds (Get-Random -Minimum 5 -Maximum 200); };
    }
# Kick off several jobs (with unique names)
1..3 | % { Start-Job -ScriptBlock $ScriptBlock -Name ('Complex Job {0}' -f $_); };

# Display Progress Bars until all jobs are completed
while (($JobList = Get-Job -State Running)) {
    foreach ($Job in $JobList) {
        try {
            # Get the most recent status
            $Percent = (Receive-Job -Job $Job -Keep)[-1];
            Write-Progress -Activity 'Background Jobs' -CurrentOperation $Job.Name -Id $Job.Id -PercentComplete $Percent;
        }
        catch { Write-Verbose -Message ('Couldn''t get percentage completed from: {0}' -f $Job.Id); }
    }
    Start-Sleep -Milliseconds 200;
}

好吧,因为您提到的用于复制(
复制文件
)的代码是一个函数,所以您可以轻松地为不同的文件组重复调用它。你试过什么?他想要进度条显示通过
robocopy
的距离,不仅仅是通过当前文件的百分比,而是通过要复制的所有文件的进度。如果我创建一个包含文件总数的变量,同时运行所有robocopy作业,这会给我一个所有工作完成百分比的进度条吗?我在另一个问题上发布了一个新的答案,你们的问题是后续问题。答案包含一个正确包装robocopy命令的脚本,包括一个PowerShell进度条。这里有一个视频演示:。@kevinklinderman:我刚刚更新了我的答案,演示了如何启动多个PowerShell后台作业,并从所有这些作业中获取状态。如果你将这项技术与另一个问题中我的机器人镜头技术相结合,你应该能够获得一些很酷的结果。谢谢,@GrahamGold!不过你是对的,我的第一个简单的回答并没有真正做到公正。我投入了更多的时间/研究,得到了一些可行的东西。