我正在构建一个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中运行)
谢谢!