Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


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

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


Цитата DJ Mogarych:
Исправил выше, пробуйте. »
Скрипт заработал. Можете подсказать, как решили проблему? Старый вариант скрипта не сохранил,потому провести сравнение не могу. Интересно.

Сделали четко по ТЗ, здесь вопросов нет.
В ходе тестирования скриптов Ув. Elven и Ув. Fors1k обнаружил проблему, что отборка по размеру файла - не всегда есть хорошо. Попадаются ситуации, когда самый крупный по размеру файл в подпапке - не является нужным. Ув. Fors1k использовал в своем скрипте метод отбора substring(0,4) - где 0 - с какого символа начинать сравнение и 4 - по какой символ включительно заканчивать сравнение. В сравнении учавствуют все файлы.

Т.к. знаний для написания своих команд мне на текущий момент нехватает (читать доки не перечитать) - попробовал использовать строку кода со скрипта Ув. Fors1k, модифицировав ваш, однако на выходе $name не применяется:
Скрытый текст

Код: Выделить весь код
$dir = "C:\Users\admin\Documents\Raccoon\content\test_apps"
$ext = "*.apk"

dir "$dir" -Directory |? {[System.IO.Directory]::EnumerateFiles("$($_.fullname)", "$ext", "Alldirectories")} |% {
$name = (Get-ChildItem -Path $dir $ext|Where-Object{"$_".substring(0,4) -eq "$dir".substring(0,4)}).BaseName
$files |Compress-Archive -DestinationPath ($zip = "$dir\$((get-date).ToString("yyyy-MM-dd-hh-mm-ss"))-$name.zip")
Rename-Item "$zip" -NewName ($zip -replace "zip$","apps")
}

Пробовал запускать скрипт через отладку в ISE - ошибку не выводит. Можете разъяснить, почему все "так просто" не происходит? Вроде все переменные совпадают...

P.S.
Скрипт Ув. Elven закончил работу с 13 папками за 53,9 сек
Скрипт Ув. Fors1k закончил работу с 13 папками за 28,7 сек

Тоже хотелось бы понять, почему так происходит. Очень "грубо догадываясь" - в скрипте Ув. Elven красиво расписан переход от процедуре к процедуре, из за чего длинна кода увеличена, что способствует уменьшению скорости работы. В это же время, Ув. Fors1k решил не расписывать переходы и сделать код "все в одной строке", из-за чего разобраться в нем чуть сложнее, но работает в разы быстрее.

Может кто-то объяснить более внятно, почему такая разница в скорости?

Еще раз всем спасибо за потраченное время на проходящего мимо ламера.

Последний раз редактировалось more_than_hater, 29-04-2021 в 17:20.


Отправлено: 17:10, 29-04-2021 | #23