添加进度条以复制文件脚本

时间:2015-04-28 12:56:14

标签: powershell

$destinationFolder = "C:\Users\Jimmy\Desktop\Saves"
$rootFolder = "C:\Users\Jimmy\Desktop\test"
$subFolder = "\sales"
$fileName = "hello.txt"

$Dir = get-childitem $rootFolder |
       select -first 10 |
       ?{ $_.PSIsContainer } |
       Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(20) }) }

[array]::Reverse($Dir)

$Dir | format-table FullName

Foreach ($i in $Dir){
  if(Test-Path $($i.FullName + $subFolder + "\" + $fileName)){
    #echo $($i.FullName + $subFolder)
    get-childitem $($i.FullName + $subFolder) |
      where {$_.Name.ToLower() -eq $fileName.ToLower()} |
      Copy-Item -Destination $destinationFolder
    echo $("just copied " + $fileName + " from " + $i.FullName.Trim())
    break;
  }else{
    echo $("Could not find " + $fileName + " in " + $i.FullName.Trim())
  }
}

我通常使用此脚本将大文件从一个位置复制到另一个位置。我想添加一个进度条,这样我就可以看到正在复制的文件等。

我想添加一个write-progress [ooooo ]类型的东西,但我不确定该怎么做。

1 个答案:

答案 0 :(得分:1)

用以下内容替换你的foreach语句:

$i=1
$dir| %{
    [int]$percent = $i / $dir.count * 100
    Write-Progress -Activity "Copying ... ($percent %)" -status $_  -PercentComplete $percent -verbose
    copy $_.fullName -Destination $destinationFolder
    $i++
}