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

拼搏现实的明天。 2022-05-28 02:19 273阅读 0赞

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

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

这里写图片描述

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

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

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

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

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

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

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

让我们来看看运行后的样子。画面还是比较直观的可以让用户知道还剩余多少时间任务就可以完成了。
这里写图片描述
说实话,我个人还是挺喜欢在一些批量或者遍历操作的脚本中使用Write-Progress来创建进度条,毕竟无论是你本人还是别人再运行你写的脚本时,随着信息的不断输出同时屏幕上方附带有进度条信息提示,这带给使用者的感受也是不一样的。

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 开始摄影

    一、摄影技术的学习方法 二、必须要掌握的专用名词 三、摄影审美的学习方法 正文: 一、摄影技术的学习方法 最近好几个朋友都聊到说要找个老师学摄影,由此我又有点关于摄

    相关 开始抓取

    从零开始学抓取   昨天突然遇到了一个需要统计某个网站所有页面单词数的任务,于是从零开始学起python搞抓取。   看了一下资料,需要用到下面几个库: bea

    相关 开始netty

    Netty概述: 1、netty是基于Java NIO的网络应用框架,client-server框架 2、Netty是一个高性能、异步事件驱动的NIO框架,它提供了对T