我目前正在使用Powershell进行编码,现在我正在寻找一种在系统搜索文档时显示进度条的方法。我使用Get-ChildItem
而不是循环,因为它比循环更快 更高效。我已经找到了如何使用Get-ChildItem
cmdlet,但我需要帮助找出如何实现进度条。以下是我正在使用的代码示例,因此更容易理解:
Set-Variable $Loading 0
Write-Progress -Activity "Collecting Files For Removal..." -CurrentOperation "Collecting User Files..." -PercentComplete $Loading
Get-ChildItem C:\Users\firea\ -Filter *.D11 -ErrorAction SilentlyContinue -Force
答案 0 :(得分:1)
所以,听起来是你要向用户显示一个显示已完成X%的进度条,但在你运行Get-ChildItem
之前你不知道有多少项目,所以你可以真的告诉你有多接近你。让我换一种说法。
说你出去远足。您可以在线快速搜索本地路径,找到一个,然后离开!你知道小道的起点,你知道在它的最后有一个corndog站,你期待着采样。 12分钟你的徒步旅行你的女朋友打电话给你,并要求你带她回来一个corndog!当然,没问题,它到达她时可能会很冷,但你可以这样做。然后她问这需要多长时间,你意识到你不知道。你进入了12分钟,但是直到你到达那个corndog站,你不知道是否还有3分钟,或者35分钟,因为你不知道这条路有多长。
好的,同样的情况,但是这次你看到了越过小径的压缩线并先取下它。当然,你不知道这条小道的所有细节是什么,但是你可以很好地了解它有多长,以及对这条小道的一般概念。这一次,当你的女朋友打电话给你时,你可以告诉她这将是大约20分钟,因为你大约需要12分钟,大约需要4分钟,然后又需要16分钟回到她所在的地方。
同样的想法将适用于您的脚本。为了给用户提供粗略的进度估计,您必须大致了解您正在查看的内容。你在搜索1个文件夹吗?好吧,没有什么好方法可以粗略估计一个文件夹,但是你不需要花那么长时间就需要一个进度条。现在,如果您正在搜索整个驱动器,则可以使用-directory
的{{1}}参数,找出有多少个文件夹,并根据您搜索的文件夹数量为用户提供进度。< / p>
示例:
Get-ChildItem
此示例获取C:\ Users文件夹下的所有文件夹。然后,它遍历这些文件夹,检查每个文件夹中的所需文件。对于每个文件夹,它会更新进度条。现在这将是一个粗略的估计,因为并非所有文件夹都具有相同数量的文件,因此某些文件夹的完成速度会比其他文件夹更快,但它至少可以让用户了解正在进行的进展。