【问题标题】:Show progress bar when executing shell script in Windows在 Windows 中执行 shell 脚本时显示进度条
【发布时间】:2015-02-01 05:10:56
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    如果您一个接一个地复制(或以其他方式处理)文件,则可以执行此操作。

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

    powershell 中的进度条是这样完成的:

    $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.*"
    

    【讨论】:

    • 好的,您能否编辑您的 PS 脚本以将 C:\abc,vhd 复制到 E:\ ,然后告诉我如何通过单击桌面快捷方式来执行该脚本?...我想要测试您建议的解决方案,谢谢!
    • 如果是一个大文件,它将不起作用 - 可以在复制操作之间更新进度条。如果是一个大文件,请使用 RoboCopy.exe。在 aswer 中更新
    • 实际上有两个文件需要从 C:\ 复制到闪存驱动器 (E:)。第一个文件约为 980MB,另一个是 14K 的小文件。用户需要经常更新的进度条来了解操作的状态。
    • 如果可以手动用鼠标进行复制/粘贴,同时将其录制为宏,然后根据需要执行宏。
    • 聚会已经很晚了,但是您可以使用以下命令在 powershell 脚本中添加计时器/进度条,here
    最近更新 更多