我正在构建一个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中工作)
谢谢!
您当前的解决方案仅显示基于文件数量的完成,而不是基于传输的数据。 – TheIncorrigible1
这很有道理。我一直在寻找关于进度指标的大部分内容都是关于Write-Progress的,我认为我不能使用,因为它只是在控制台窗口中显示它(正确?)。很难找到其他的东西。 – sloppyfrenzy
'Write-Progress'基本上会做同样的事情,只是更短。 – TheIncorrigible1