|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Упростить скрипт |
|
|
PowerShell - Упростить скрипт
|
|
Пользователь Сообщения: 50 |
Уважаемые форумчане!
Вопрос непраздный , есть скрипт 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 Сообщения: 1234
|
Профиль | Отправить 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 Сообщения: 1234
|
Профиль | Отправить 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 | |
|