2017-09-01 211 views
0

我正在构建一个PowerShell GUI来备份配置文件文件夹。一切运作良好,除非我无法弄清楚如何准确显示每个文件夹的进度百分比。如何在PowerShell表单中复制文件时显示进度百分比?

这里是我目前有...

$dir = "Drive letter of choice" (ex. "C:") 
    $user = "C:\Users\username" 
    $userfolder = "username" 

    $Files = Get-ChildItem -Path "$User\Documents\*" -Recurse 

    $i=0 

    ForEach ($File in $Files) { 

     $i++ 
     [int]$pct = ($i/$Files.count)*100 
     Copy-Item "$User\Documents\$File" "$dir\Backups\$UserFolder\Documents\" -Recurse 
     $Status_Label.Text = "Backing Up Documents... $($pct)%" 
     $GUI.Refresh() 

     start-sleep -Milliseconds 100 

    } # End ForEach 

基于一个并排侧比较它看起来复制所有文件夹/文件就好了,但比例路要走。在上面的Documents文件夹例子的情况下,文件复制的时间是15-20%。其余的是“源文件找不到”错误。它正在主文件夹(文档,图片等)中查找实际位于子文件夹中的文件。

我明白了为什么它会在主文档文件夹中查找,因为Copy-Item的源文件夹是根文件夹,但为什么它会将所有内容都正确地复制到其子文件夹中,然后返回并抱怨所有这些子文件夹,文件?

(这也需要在Windows 7中工作)

谢谢!

+0

您当前的解决方案仅显示基于文件数量的完成,而不是基于传输的数据。 – TheIncorrigible1

+1

这很有道理。我一直在寻找关于进度指标的大部分内容都是关于Write-Progress的,我认为我不能使用,因为它只是在控制台窗口中显示它(正确?)。很难找到其他的东西。 – sloppyfrenzy

+0

'Write-Progress'基本上会做同样的事情,只是更短。 – TheIncorrigible1

回答

0

我觉得你可以在对话框中使用(喜欢的东西:123(这个是葡萄牙语,但具有良好的代码示例))

但我不是肯定关于Windows。

+0

谢谢,但Linux Bash和Powershell不会混用。 – sloppyfrenzy

相关问题