PowerShell教程

从零开始学PowerShell(8)创建一个进度条

本文主要是介绍从零开始学PowerShell(8)创建一个进度条,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我相信不少人会遇到这类情况,通常在执行一些大批量操作时,代码正在后台持续执行,你又没有为每个细节设置详尽的输出的话,你也不知道到底是脚本卡死了还是正在运行,因为没有任何响应反馈。

应对这种情况,要是我们给脚本创建一个进度条就可以避免以上这些可能产生的问题,如果你有留意过PowerShell更新帮助文档时的状态就会发现在下载更新文档时PowerShell会自动出现一个进度条。

为PowerShell创建进度条使用Write-Progress命令就可以很方便的做到,先来看下使用方法(因为代码比较长,我这里使用了换行符做了代码截断换行)。 

for ($p=1; $p -lt 100; $p++) {
  Write-Progress -Activity "Starting..."`
   -PercentComplete $p`
    -CurrentOperation "$p% Finished"`
     -Status "Loding..."
  Start-Sleep 1
}

这个例子很简单的写了一个循环,从1开始一直循环到100,为了让效果明显,这里使用了Start-Sleep命令目的是为了在每次循环的时候停顿1秒钟,运行代码后就可以看到在PowerShell控制台里会显示一个以符号形式画出来的动态进度条状态。

这里我们用到了Write-Progress命令的几个参数和说明分别如下:

  • Activity: 在进度条的状态条最上方显示一行文字用来描述正在进行的活动内容。
  • PercentComplete: 用于显示所完成的百分比形态,如果数值设置为-1代表未知形态显示,就不会显示。
  • CurrentOperation: 在进度条的下方显示一行蚊子用来描述当前正在发生的情况。
  • Status: 显示当前活动的状态。

我们常见的进度条状态除了慢慢累积百分比直到变成100%完成目标外,还有一种是以倒计时形式存在的。为了展现倒计时形式的样子我们需要修改下我们之前的代码,把数值累加循环改成循环递减。

for ($p=100; $p -ge 0; $p--) {
  Write-Progress -Activity "Starting..."`
    -SecondsRemaining $p`
    -CurrentOperation "$p% Not Finished"`
     -Status "Loding..."
  Start-Sleep 1
}

让我们来看看运行后的样子。画面还是比较直观的可以让用户知道还剩余多少时间任务就可以完成了。

说实话,我个人还是挺喜欢在一些批量或者遍历操作的脚本中使用Write-Progress来创建进度条,毕竟无论是你本人还是别人再运行你写的脚本时,随着信息的不断输出同时屏幕上方附带有进度条信息提示,这带给使用者的感受也是不一样的。

这篇关于从零开始学PowerShell(8)创建一个进度条的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!