在PowerShell表单中复制文件时如何显示进度百分比?

时间:2017-09-01 18:44:46

标签: powershell powershell-v2.0

我正在构建一个PowerShell GUI来备份配置文件夹。一切都很好,除了我无法弄清楚如何准确显示每个文件夹的进度百分比。

这是我现在拥有的......

    $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中运行)

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你可以在对话框中使用 gauge (类似于:123(这一个是葡萄牙语,但有一个很好的代码样本))

但我不确定Windows。