|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 | Цитировать 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 Сообщения: 1234
|
Профиль | Отправить 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 Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата Technik_spat:
Какую ошибку пишет? Цитата Technik_spat:
![]() Цитата Technik_spat:
|
|||
|
------- Отправлено: 11:58, 09-01-2024 | #6 |
|
fascinating rhythm Сообщения: 6699
|
Профиль | Отправить 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 Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата Technik_spat:
Цитата Technik_spat:
|
|||
|
------- Отправлено: 13:41, 09-01-2024 | #8 |
|
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать СПАСИБО!!!
Теперь можно bat добить другие процедуры и наконец скорость пойдет))))) |
|
Отправлено: 13:49, 09-01-2024 | #9 |
|
fascinating rhythm Сообщения: 6699
|
Профиль | Отправить 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 | |
|