|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Упростить скрипт |
|
PowerShell - Упростить скрипт
|
Новый участник Сообщения: 38 |
Профиль | Отправить PM | Цитировать
Уважаемые форумчане!
Вопрос непраздный , есть скрипт pwsh, но он отрабатывает очень долго (40-60 минут). Возникла идея изъять из неё функцию отбора по признаку 11 и 28 (повесил на bat/cmd, отсеивает из более 500 тыс строк до 30-35 тыс, что правильные значения), что бы попробовать ускорить процесс. Но сколько не пробовал это сделать (я про изъятие функции), так и не смог осилить, тупо не отрабатывает. Помогите убрать функцию отбора по признакам 11 и 28, оставив только выборку по SGTIN. $sgtin = 'G:\Test_stgin\Farm_new\amark_sgtin.txt' $repack = 'G:\Test_stgin\Farm_new\ITOG.txt' $out = 'G:\Test_stgin\Farm_new\out.txt' $csvSgtin = Import-Csv -Path $sgtin -delim ';' -Header SGTIN, H, Value $csvRepack = Import-Csv -Path $repack -delim ';' -Header SGTIN, H, Value $a = ($csvSgtin|? Value -Match '^11$|^28$').SGTIN $r = foreach ($i in $csvRepack) { if ($a -eq $i.SGTIN) {$i.SGTIN+';'+$i.Value} } $r|Out-File $out Remove-Item -Path "G:\Test_stgin\Farm_new\amark_sgtin.txt" Remove-Item -Path "G:\Test_stgin\Farm_new\ITOG.txt" |
|
Отправлено: 07:54, 09-01-2024 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Хмм,
Возможно... Тогда в моем скрипте можно ускорить: $sgtin = 'G:\Test_stgin\Farm_new\amark_sgtin.txt' $repack = 'G:\Test_stgin\Farm_new\ITOG.txt' $out = 'G:\Test_stgin\Farm_new\out.txt' $a = (-split (gc $sgtin -raw)) -replace ';[^\n]+' $r = (sls $repack -patt $a).line|convertfrom-csv -delim ';' -h SGTIN,H,Value| select SGTIN,Value $param = @{} $param.Path = $out $param.NoTypeInformation = $true $param.Encoding = 'UTF8' $param.Delimiter = ';' if ($psversiontable.psversion.major -gt 5){ $param.NoHeader = $true $param.UseQuotes = 'AsNeeded' } $r|export-csv @param |
------- Отправлено: 14:20, 09-01-2024 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Technik_spat, а этот вопрос решили?
Ну, всё равно, может быть, кому-нибудь пригодится... powershell с потоковым чтением-записью файлов: $sgtin = 'G:\Test_stgin\Farm_new\amark_sgtin.txt' $repack = 'G:\Test_stgin\Farm_new\ITOG.txt' $out = 'G:\Test_stgin\Farm_new\out.txt' $reader = [io.streamreader]::new($sgtin) $ht = @{} while ($reader.peek() -ne -1) { $str = $reader.readline() if ($str -match '\b(11|28)\b;?$'){ $ht.add($str.substring(0,$str.indexof(';')),'f') } } $reader.close() $reader = [io.streamreader]::new($repack) $writer = [io.streamwriter]::new($out) while ($reader.peek() -ne -1) { $str = $reader.readline() if ($ht[$str.substring(0,$str.indexof(';'))]){ $s = $str -split ';' $writer.writeline($s[0] + ';' + $s[2]) } } $reader.close() $writer.close() |
------- Отправлено: 12:37, 12-01-2024 | #12 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - Отправка файлов по почте (помогите упростить) | Eirstream | Программирование и базы данных | 0 | 11-05-2021 14:24 | |
VBS/WSH/JS - [решено] Упростить Скрипт | asacyra | Скриптовые языки администрирования Windows | 2 | 30-12-2019 19:05 | |
2012 R2 - Сервер терминалов - упростить темы удаленного рабочего стола | __sa__nya | Windows Server 2012/2012 R2 | 1 | 18-07-2015 11:01 | |
System/Проект - каша в сетях на предприятии - упростить | identificator1 | Сетевые технологии | 1 | 23-04-2012 08:42 | |
Как можно упростить установку Windows | Disconnect | Microsoft Windows 95/98/Me (архив) | 7 | 11-11-2004 21:40 |
|