Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Добавить прогресс бар в готовый скрипт

Ответить
Настройки темы
PowerShell - Добавить прогресс бар в готовый скрипт

Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


Изменения
Автор: c4uran
Дата: 12-06-2018
Описание: поправил скрипт
День добрый, есть такой не сложный скрипт который ищет дубликаты файлов в папке
он работает со свичем names, если установить его то он ищет дубликаты по названию файлов (названия файлов многосоставное с разделителем - точка)
если без свича то ищет просто по размеру, если у двух файлов совпадает размер или часть имени совпадает то перемещает их в директорию trash\names или trash\size

так вот дело в том что скрипт довольно долго работает и я хочу прикрутить к нему не сложный прогресс бар, вроде такого, но у меня это никак не выходит

Код: Выделить весь код
$totalTimes = 10

  $i = 0

  for ($i=0;$i -lt $totalTimes; $i++) {

  $percentComplete = ($i / $totalTimes) * 100

  Write-Progress -Activity 'Doing thing' -Status "Did thing $i  times" -PercentComplete $percentComplete

  sleep 1

}
помогите пожалуйста сделать так чтобы прогресс бар заполнялся по мере обработки каждого файла

А вот сам скрипт поиска дубликатов



Код: Выделить весь код
$RootFolder = "\\server\test"
$WorkFolder = $RootFolder + "\sort"
$TrashFolder = $RootFolder + "\trash"
$LogFile = $RootFolder + "\dups.log"

if (-not(Test-Path $WorkFolder)) { Write-Host "ОШИБКА $WorkFolder не существует" -ForegroundColor red; Return  }
if (-not(Test-Path $TrashFolder)) { Write-Host "Создаю $TrashFolder" -ForegroundColor yellow; New-Item -ItemType "directory" -Path $TrashFolder  }

Function WriteLog($str, $Color) {
    $logstr = ((Get-Date -UFormat "%Y.%m.%d %T") + " " + $str)
    $logstr >> $LogFile
    Write-Host $logstr -ForegroundColor $Color
}

function DuplicateCandidate([string]$DupsParam) {

$Files = Get-ChildItem -Path $WorkFolder | Where {!$_.PsIsContainter -and $_.BaseName -match "\."}

$arr = foreach($i in $Files) {
        
	$files | Where {$_.Name -ne $i.Name} | Where {

		if ($DupsParam -eq "names") {

            (Compare-Object $_.BaseName.Split(".") $i.BaseName.Split(".") -IncludeEqual -ExcludeDifferent).Count -ge 4

        } else {

            $files | Where {$_.Name -ne $File.Name} | Where { $_.Length -eq $File.Length} 

        }
	}
}

if ($DupsParam -eq "names") {

    Return ($arr | Select -Uniq)

    } else {

     if (Test-Path $arr.FullName) {

        if (-not(Test-Path ($TrashFolder + "\" + $arr.Name))) { 
      
        $arr | % { WriteLog "Переместил $_ в Корзину" "green" }

        Move-Item -Path $arr.FullName -Destination $TrashFolder -WhatIf

        }
    }
 }
}

function GetDuplicates([string]$DupsParam) {

WriteLog "---------------------------------------------------------------------------------" "yellow"
WriteLog "Ищем дубликаты" "yellow"

$FindDups = DuplicateCandidate $DupsParam

if (($FindDups).count -eq 0 ) {
        WriteLog "--------------------------" "green"
        WriteLog "Дубликаты не найдены" "green"
 } else {
        WriteLog "--------------------------" "yellow"
        ($FindDups).Name | sort -Descending | % {WriteLog "$_" "yellow" }
 }
}

GetDuplicates "Names"

Отправлено: 21:10, 12-06-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


scum01001, это Вы к чему всё написали?

Отправлено: 18:15, 25-10-2018 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата scum01001:
Осталось привязать к процессу »
scum01001, знаете анекдот про мышек и мудрого филина? Здесь он будет в аккурат к месту.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:16, 26-10-2018 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Добавить прогресс бар в готовый скрипт

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Помогите прикрутить прогресс бар к скрипту Виктор_Падий@vk Скриптовые языки администрирования Windows 4 13-11-2016 14:44
Добавить прогресс бар к скрипту support23 AutoIt 1 25-11-2012 06:53
[решено] Прогресс-бар для скрипта Tosyk AutoIt 10 23-09-2012 11:04
VBS/WSH/JS - [решено] Прогресс бар для vbscript neo21 Скриптовые языки администрирования Windows 2 27-10-2011 13:31
[решено] Прогресс бар semiono AutoIt 17 24-03-2009 23:18




 
Переход