Затупил на банальной задаче - отсечь повторяющиеся значения. Понимаю, что это крайне просто, но с утра плохо соображаю. Простая функция копирования, нужно впендюрить счетчик в процентах выполнения от 0 до 100. Посчитал процент выполнения, но как в условие впихнуть сравнение, что если $percent2 отличается от $percent1, то выводить изменение только один раз. Сейчас на выходе, по мере копирования получаем ...87 87 87 87 87 87 87 88 88 88 88 88 88 88 88 88 89 89 89 89 89... а надо поймать условие только при смене 1 на 2 , потом на 3 ну и так далее.
Короче тупо отсечь повторяющиеся значения переменной в цикле.
function Copy-File
{
param ([string]$from,
[string]$to)
$ffile = [io.file]::OpenRead($from)
$tofile = [io.file]::OpenWrite($to)
$in = Get-item $from
$in_Length = $in.Length
try
{
$sw = [System.Diagnostics.Stopwatch]::StartNew();
[byte[]]$buff = new-object byte[] (4096 * 1024)
[long]$total = [long]$count = 0
do
{
$percent1 = (($total / $in_Length).ToString("P")).Trim('%') -replace ',','.'
$count = $ffile.Read($buff, 0, $buff.Length)
$tofile.Write($buff, 0, $count)
$total += $count
$percent2 = (($total / $in_Length).ToString("P")).Trim('%') -replace ',','.'
[math]::Round($percent2,0)
###########################
# выводить результат только если переменная изменилась один раз
###########################
}
while ($count -gt 0)
$sw.Stop();
$sw.Reset();
}
finally
{
$ffile.Close();
$tofile.Close();
}
}
Copy-File -from 'D:\Films2\The.Island.2005.US.BDRemux.1080p.mkv' -to 'g:\The.Island.2005.US.BDRemux.1080p.mkv'