【发布时间】:2015-02-01 05:10:56
【问题描述】:
我的用户每天都在手动备份一个巨大的文件。我通过创建一个 DOS 批处理脚本来自动化这个过程,但是命令行窗口没有显示这个过程的缓慢进度。是否可以为此过程创建一个 GUI 版本,在您手动复制和粘贴大文件时显示相同的进度条?
【问题讨论】:
标签: windows user-interface powershell batch-file progress-bar
我的用户每天都在手动备份一个巨大的文件。我通过创建一个 DOS 批处理脚本来自动化这个过程,但是命令行窗口没有显示这个过程的缓慢进度。是否可以为此过程创建一个 GUI 版本,在您手动复制和粘贴大文件时显示相同的进度条?
【问题讨论】:
标签: windows user-interface powershell batch-file progress-bar
如果您一个接一个地复制(或以其他方式处理)文件,则可以执行此操作。
如果你使用通配符掩码复制文件,(复制 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.*"
【讨论】: