在Windows中执行shell脚本时显示进度条

时间:2015-02-01 05:10:56

标签: windows user-interface powershell batch-file progress-bar

我的用户每天都在手动备份一个巨大的文件。我通过创建DOS批处理脚本来自动执行此过程,但命令行窗口不显示此过程的缓慢进度。是否可以创建此流程的GUI版本,显示手动复制和粘贴大文件时显示的相同进度条?

1 个答案:

答案 0 :(得分:1)

如果您逐个复制(或无论如何处理)文件,您可以执行此操作。

如果你使用通配符掩码复制文件,(复制c:\ * d:\),则不能

powershell中的Progressbars就是这样完成的:

$local:fileList = @( Get-ChildItem -Recurse -Path 'd:\_MEDIA\VIDEO' | Where-Object {$_.psIsContainer -eq $false} )
$local:fileTotalSize = $( $local:fileList | Measure-Object -Property 'Length' -Sum).Sum
$local:currentlyProcessedBytes = 0;
$local:onePercentSize = $local:fileTotalSize / 100
$local:progressActivity = 'Making backup'

ForEach ($file in $local:fileList ) {
    Write-Progress -Activity $local:progressActivity -Status "Processing $($file.Name)" -PercentComplete $( [math]::Floor( $local:currentlyProcessedBytes / $local:onePercentSize) )
    Write-Host "Working with file [$($file.FullName)]"
    #work
        #Placeholder for do some job with file
        Start-Sleep -Milliseconds 300
    $local:currentlyProcessedBytes += $file.Length

}

Write-Progress -Activity $local:progressActivity -Completed

有一个人做了chimera of robocopy ad powershell

如果您有一个大文件,请使用RoboCopy - 它将显示百分比

robocopy D:\_Media\Video d:\ "The.Boy.In.The.Striped.Pajamas.barm.*"