![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Technik_spat,
Образец файла потребуется... И желательно описание того, что в итоге требуется получить, а лучше образец того, что будет на входе и что необходимо получить на выходе... |
------- Отправлено: 08:21, 09-01-2024 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Сама задача:
из файла ITOG извлечь первый и третий столбцы, используя ключевые строки из файла amark_sgtin.txt Во вложении обрезанные файлы и как должен выглядить файл вывода (out.txt) Файл 169499 Файл 169500 Файл 169501 |
Последний раз редактировалось Technik_spat, 08-05-2025 в 11:58. Отправлено: 09:03, 09-01-2024 | #3 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата Technik_spat:
Наверное, так: $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 = ((sls $sgtin -patt '\b(11|28)\b;?$').line| convertfrom-csv -delim ';' -h SGTIN,H,Value).sgtin $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 |
|
------- Отправлено: 10:26, 09-01-2024 | #4 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 10:52, 09-01-2024 | #5 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата Technik_spat:
Какую ошибку пишет? Цитата Technik_spat:
![]() Цитата Technik_spat:
|
|||
------- Отправлено: 11:58, 09-01-2024 | #6 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать $sgtin = 'D:\temp\test_stgin\amark_sgtin.txt' $repack = 'D:\temp\test_stgin\ITOG.txt' $out = 'D:\temp\test_stgin\out.txt' [regex]$repackStrings = [System.IO.File]::ReadAllLines("$sgtin") -replace ';.*' -join '|' [regex]$replace = ';\w+|\s+' [System.IO.File]::WriteAllLines("$out", ([System.IO.File]::ReadAllLines("$repack") -match $repackStrings -replace $replace)) |
------- Последний раз редактировалось DJ Mogarych, 09-01-2024 в 12:56. Отправлено: 12:41, 09-01-2024 | #7 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата Technik_spat:
Цитата Technik_spat:
|
|||
------- Отправлено: 13:41, 09-01-2024 | #8 |
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать СПАСИБО!!!
Теперь можно bat добить другие процедуры и наконец скорость пойдет))))) |
Отправлено: 13:49, 09-01-2024 | #9 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать YuS_2, я так понял, что автор хотел как раз
Цитата Technik_spat:
|
|
------- Отправлено: 14:01, 09-01-2024 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|