从零开始学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)创建一个进度条的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django之缓存和信号
- 下一篇: 主存储器的组成