Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11112 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis

Цитата:
К предыдущему <dt>

Вот!
А что конкретно у нас в предыдущем <dt>Имя:</dt>?
Name,
Given Name,
Additional Name,
Family Name,
Yomi Name,
Given Name Yomi,
Additional Name Yomi,
Family Name Yomi,
Name Prefix,
Name Suffix,
или
Short Name
?
Какой болтик куда закручивать, чтобы машина не развалилась? Здесь, как раз, вся суть в деталях...  
Другими словами: попробуй напиши код, но так, чтобы он всё правильно распределил и ровно вот при таких исходных данных, которые были озвучены...
 
Добавлено:
Taran2ul

Цитата:
В данном случае Name = Given Name.  

Думаете, так стало понятнее?
А как же:

Код:
Name,Given Name
"Иван",Иван

?
Не говоря уже о:
Vanek и прочих сослуживцах...
Необходимо описание: точное и однозначное соответствие, что и куда трансформируется...
Ну и пример файлов (лучше не один)... для теста.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:49 28-09-2018
Taran2ul



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Код:
...
                <div class="username"><h4>Vanek <span class="position">Новичок</span></h4></div>
...
                    <dt>Имя:</dt>
                    <dd>Иван</dd>
                    <dt>Телефон:</dt>
                    <dd>+123456789000</dd>
                    <dt>разная_фигня</dt>
                    <dd>разная_фигня</dd>
                    <dt>разная_фигня</dt>
                    <dd><a href="разная_фигня" title="разная_фигня">Сослуживец</a></dd>
...


Код:
...
                <div class="username"><h4>Nickname <span class="position">Новичок</span></h4></div>
...
                    <dt>Имя:</dt>
                    <dd>Name</dd>
                    <dt>Телефон:</dt>
                    <dd>Phone 1 - Value</dd>
                    <dt>разная_фигня</dt>
                    <dd>разная_фигня</dd>
                    <dt>разная_фигня</dt>
                    <dd><a href="разная_фигня" title="разная_фигня">Notes</a></dd>
...


Код:
Name,Given Name,Additional Name,Family Name,Yomi Name,Given Name Yomi,Additional Name Yomi,Family Name Yomi,Name Prefix,Name Suffix,Initials,Nickname,Short Name,Maiden Name,Birthday,Gender,Location,Billing Information,Directory Server,Mileage,Occupation,Hobby,Sensitivity,Priority,Subject,Notes,Language,Photo,Group Membership,Phone 1 - Type,Phone 1 - Value,Organization 1 - Type,Organization 1 - Name,Organization 1 - Yomi Name,Organization 1 - Title,Organization 1 - Department,Organization 1 - Symbol,Organization 1 - Location,Organization 1 - Job Description
"Иван",Иван,,,,,,,,,,Vanek,,,,,,,,,,,,,,Сослуживец,,,* myContacts,Мобильные устройства,+123456789000,,"Рога и копыта",,,,,,
"Петр",Петр,,,,,,,,,,Petya,,,,,,,,,,,,,,Сослуживец,,,* myContacts,Мобильные устройства,+123456789001,,"Рога и копыта",,,,,,
...

Nickname = Vanek
Name = Иван
Phone 1 - Value = +123456789000
Notes = Сослуживец
Given Name = Name
Остальные переменные константы.

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 21:02 28-09-2018
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Если все значения в <dt> русские, то на PS (очень примерно, надо подставить свои значения и отладить)

Код:
$fmt = @( "Имя", и далее все по порядку ) # в каком порядке формируем строку
Set-Content имя_результирующего_файла -Value "Name,Given Name,Additional Name,Family Name,Yomi Name, .... весь заголовок"
Get-ChildItem здесь условие выборки файлов | foreach {
  $data = @{}; $key = "" # обнуляем данные
  Get-Content $_ | foreach {
    if ($_ -match "<dt>(.*?)</dt>" ) {
      $key = $matches[1]
      $key = $key -replace ":$" # убрать двоеточие
    }
    elseif ($_ -match "<dd>(.*?)<dd>" ) {
      if ($key) { $data[$key] = $matches[1] }
      $key = ""
  }
  $val = ""
  foreach ($f in $fmt) {
    $val += ","+$data[$f]
  }
  $val = $val -replace "^," # лишняя запятая
  Add-Content имя_результирующего_файла -Value $val
}

Для ненужных значений в $fmt ставить "", например
$fmt = @("Имя","Фамилия","","","","Никнэйм","Разная фигня","Телефон","Другая фигня","","")
где "Имя", "Телефон" и пр. это то, что стоит между <dt>...</dt> без двоеточия


----------
Разум когда-нибудь победит

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 21:09 28-09-2018 | Исправлено: Smitis, 21:22 28-09-2018
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Taran2ul

Цитата:
Остальные переменные константы.

Ну, хорошо, если файлы под грифом "секретно", то хотя бы расскажите:
В каждом файле отбираемые элементы, встречаются однократно или могут быть представлены сразу несколько групп?
И если несколько, то всегда ли есть однозначное соответствие количества элементов на группу? Т.е. скажем, Name, может встречаться 10 раз, а Notes, например, 8 - такое несоответствие возможно?
И последовательность элементов всегда именно такая, либо они могут быть расположены в разном порядке, в пределах группы?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:51 29-09-2018 | Исправлено: YuS_2, 10:23 29-09-2018
andrejka_k

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
iNNOKENTIY21
Cпacибo зa пoдcкaзки к вoпpocу пpo paзбиeниe фaйлa cpeдcтвaми powershell.
Вoзник eщe вoпpoc, cвязaнный c шифpoвaниeм двoичных фaйлoв пpи пoмoщи powershell.
Нaшeл иcхoдник aлгopитмa, кoтopый (cудя пo oтзывaм) пoзвoляeт шифpoвaть фaйлы и pacшифpoвывaть их нa powershell.
powershell для мeня - тeмный лec, нo oдин из cпocoбoв peшeния пoвceднeвных зaдaч нa ПК, гдe пpaвa пoльзoвaтeля cильнo oгpaничeны.
Пpoшу вaшeй пoмoщи в мoдификaции иcхoднoгo кoдa FileCryptography.psm1 для зaдaчи шифpoвaния и pacшифpoвки двoичнoгo фaйлa co cлeдующими уcлoвиями.
 
шифpуeмый фaйл - C:\Fraps\photo.jpg
aлгopитм шифpoвaния - AES
пapoль (ключ, иcпoльзуeмый для шифpoвaния фaйлa) - a1b2c3d4
имя зaшифpoвaннoгo фaйлa и путь eгo paзмeщeния cooтвeтcтвуют иcхoдным, тoлькo мeняeтcя eгo pacшиpeниe нa aes (чтoбы нe пepeпутaть фaйлы) - т.e. C:\Fraps\photo.aes или C:\Fraps\photo.jpg.aes
 
Нacкoлькo я пoнимaю, пocлeдoвaтeльнocть дeйcтвий включaeт 3 этaпa: coздaниe ключa шифpoвaния, шифpoвaниe фaйлa и eгo pacшифpoвкa.
Влoжeнныe функции c фигуpными cкoбкaми - кoнcтpукция cлишкoм cлoжнaя для мoeгo пoнимaния Идeaльнo, чтoбы кaждый из тpeх этaпoв был пpeдcтaвлeн cвoим кoдoм, кудa пpи нeoбхoдимocти мoжнo былo внecти измeнeния вceгo двух уcлoвий (путь paзмeщeнния фaйлa (зaмeнить нa пpoизвoльный вмecтo C:\Fraps\photo.jpg) и пapoль (зaмeнить нa пpoизвoльный вмecтo a1b2c3d4)).
Т.e. oткpыл oкнo powershell, cкoпиpoвaл из тeкcтoвoгo фaйлa кoд для шифpoвaния фaйлa C:\Fraps\photo.jpg c ключoм a1b2c3d4, пoлучил в тoй жe пaпкe зaшифpoвaнный фaйл photo.aes или photo.jpg.aes.
Нa дpугoм кoмпьютepe oткpыл oкнo powershell, cкoпиpoвaл из тeкcтoвoгo фaйлa кoд для pacшифpoвки фaйлa photo.aes или photo.jpg.aes ключoм a1b2c3d4 и пoлучил opигинaльный photo.jpg.
Зapaнee oгpoмнoe cпacибo зa пoмoщь.

Всего записей: 1225 | Зарегистр. 13-05-2003 | Отправлено: 12:53 29-09-2018
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrejka_k
Зачем его модифицировать? Его надо установить и использовать.
 
Установка модулей производится в одноимённую папку по одному из путей хранящемуся в переменной $env:PSModulePath, лучше в папке пользователя.
 
По умолчанию:
c:\Users\ВашПользователь\Documents\WindowsPowerShell\Modules\FileCryptography\FileCryptography.psm1
 
Подробнее...

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 15:19 29-09-2018
andrejka_k

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Cпacибo зa paзъяcнeния, вce бoлee или мeнee cтaнoвитcя нa cвoи мecтa.
Ceйчac нeт вoзмoжнocти пpoвepить нa paбoчeй мaшинe, нo пpeдпoлaгaю, чтo c уcтaнoвкoй мoдуля вpяд ли чтo-тo пoлучитcя Пpичинa – oтcутcтвиe пpaв aдминиcтpaтopa для мoeй учeтнoй зaпиcи (пpaвa cильнo уpeзaны и уcтaнoвкa чeгo-либo, в т.ч. измeнeниe peecтpa, зaпpeщeнa).
C дpугoй cтopoны, ecть вoзмoжнocть зaпуcтить powershell и выпoлнять в нeм кoмaнды (чepeз copy-paste). Пo этoй пpичинe peшил paзбить зaдaчу нa этaпы, для кoтopых тpeбoвaлcя oтдeльный кoд
Вoзмoжнo, мoя идeя нe пpoкaтит. Нo вдpуг?!!

Всего записей: 1225 | Зарегистр. 13-05-2003 | Отправлено: 15:43 29-09-2018
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrejka_k
Процитирую себя:
Цитата:
лучше в папке пользователя
т.е. админские и не нужны, разве, что на разрешение политики исполнения скриптов (Get-ExecutionPolicy и Set-ExecutionPolicy). Но без этого никуда. Есть еще и Import-Module (Import-Module "К:\Модулю\Путь\FileCryptography.psm1") но это только на текущий сеанс, пока консоль не закроешь.

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 15:52 29-09-2018
andrejka_k

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
А можно ли проверить какой-либо командой (или еще как-нибудь) разрешение политики исполнения скриптов (Get-ExecutionPolicy и Set-ExecutionPolicy)? Если да, то что нужно выполнить в PS и что в результате будет отображаться? Думаю, что именно с этого нужно начать в моем случае.

Всего записей: 1225 | Зарегистр. 13-05-2003 | Отправлено: 15:59 29-09-2018
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrejka_k

Цитата:
А можно ли проверить какой-либо командой (или еще как-нибудь) разрешение политики исполнения скриптов (Get-ExecutionPolicy и Set-ExecutionPolicy)?

Get-ExecutionPolicy - get - получить
Set-ExecutionPolicy - set - установить (Set-ExecutionPolicy -ExecutionPolicy RemoteSigned #общая рекомендация)
Set-ExecutionPolicy
Google

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 16:34 29-09-2018 | Исправлено: iNNOKENTIY21, 16:39 29-09-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Taran2ul
 

Код:
 
$input = '@
...
                <div class="username"><h4>Vanek <span class="position">Новичок</span></h4></div>
...
                    <dt>Имя:</dt>
                    <dd>Иван</dd>
                    <dt>Телефон:</dt>
                    <dd>+123456789000</dd>
                    <dt>разная_фигня</dt>
                    <dd>разная_фигня</dd>
                    <dt>разная_фигня</dt>
                    <dd><a href="разная_фигня" title="разная_фигня">Сослуживец</a></dd>
...  
@'
 
 
$template = '@
...
                <div class="username"><h4>{Nickname*:Vanek} <span class="position">Новичок</span></h4></div>
...
                    <dt>Имя\:</dt>
                    <dd>{Name:Иван}</dd>
                    <dt>Телефон:</dt>
                    <dd>{Phone_1_Value:+123456789000}</dd>
                    <dt>разная_фигня</dt>
                    <dd>разная_фигня</dd>
                    <dt>разная_фигня</dt>
                    <dd><a href="разная_фигня" title="разная_фигня">{Notes:Сослуживец}</a></dd>
...  
...
                <div class="username"><h4>{Nickname*:Vanek} <span class="position">Новичок</span></h4></div>
...
                    <dt>Имя\:</dt>
                    <dd>{Name:Иван}</dd>
                    <dt>Телефон:</dt>
                    <dd>{Phone_1_Value:+123456789000}</dd>
                    <dt>разная_фигня</dt>
                    <dd>разная_фигня</dd>
                    <dt>разная_фигня</dt>
                    <dd><a href="разная_фигня" title="разная_фигня">{Notes:Сослуживец}</a></dd>
...  
@'
 
$input | ConvertFrom-String -TemplateContent $template -OutVariable Test
 

 
 
Добавлено:
 
Пользоваться так:
 
PS> $Test | Format-List
 
Nickname      : Vanek
Name          : Иван
Phone_1_Value : +123456789000
Notes         : Сослуживец
 
 
PS> $Test | ConvertTo-Csv -NoTypeInformation
 
"Nickname","Name","Phone_1_Value","Notes"
"Vanek","Иван","+123456789000","Сослуживец"
 
 
Smitis

Цитата:
 
----------
Разум когда-нибудь победит


Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 14:11 30-09-2018 | Исправлено: LevT, 20:01 30-09-2018
andrejka_k

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возвращаясь к вопросу несколькими постами выше...
Хочу разобраться, почему у меня скрипт не отрабатывается.
Что сделал?
1. Добавил разрешение Set-ExecutionPolicy -ExecutionPolicy RemoteSigned.
Теперь по команде Get-ExecutionPolicy -List получаю следующее:
 Scope                         ExecutionPolicy
-----                         ---------------
MachinePolicy                               Undefined
UserPolicy                               Undefined
Process                               Undefined
CurrentUser                               Undefined
 LocalMachine                            RemoteSigned
2. Импортировал модуль
Import-Module "E:\powershell\FileCryptography.psm1"
По команде Get-Module -ListAvailable получаю следующее:
ModuleType Name                      ExportedCommands
---------- ----                      ----------------
Manifest   AppLocker                 {}
Manifest   BitsTransfer              {}
Script     FileCryptography          {}
Manifest   PSDiagnostics             {}
Manifest   TroubleshootingPack       {}
3. Когда начинаю последовательно вводить команды, получаю следующее:
Подробнее...
Предполагаю, что где-то что-то упустил, поэтому и возникают ошибки.
Не укажете, где и что нужно добавить в командах, чтобы модуль, наконец, отработал нормально?
Заранее огромное спасибо.
 
Добавлено.
Нашел еще несколько примеров реализации шифрования при помощи powershell. Возможно кто-то заинтересуется
 
PowerShell Encryption Examples
5 examples of different techniques that can be used to securely encrypt (and in most cases, share) secret data using PowerShell.
EncryptionExamples.zip
 
Share encrypted data between users and computers with PowerShell
The attached zip file contains a module which makes it easy to encrypt data using PowerShell, in such a way that it can be decrypted by other authorized users on any computer.  It does this by leveraging digital certificates.
decrypted by other authorized users on any computer.  It does this by leveraging digital certificates.
ProtectedData.zip

Всего записей: 1225 | Зарегистр. 13-05-2003 | Отправлено: 17:31 30-09-2018 | Исправлено: andrejka_k, 20:34 30-09-2018
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrejka_k
хз что за проблема возникала. У Get-Module ExportedCommands {} не должны быть пустыми.
а в свойствах файла такого нет

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 21:32 30-09-2018
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LevT

Цитата:
Smitis
 
Цитата:
 
----------
Разум когда-нибудь победит  

Поздравляю. Я рад, что Вы взялись за ум.

----------
Разум когда-нибудь победит






Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 22:42 30-09-2018 | Исправлено: KLASS, 23:30 30-09-2018
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
Пользоваться так:

Метод-то хороший, но боюсь, что в реальных файлах .php многоточие вряд ли присутствует, поэтому использовать его в шаблоне нельзя. И кроме того, на выходе человек хотел получить файл csv, определенного содержания...
Да и файлы .php могут сильно отличаться по содержанию, чтобы использовать для разбора шаблоны, именно поэтому был задан вопрос про образцы файлов, но видимо, задавший вопрос потерял интерес к самой задаче, т.к. ничего не отвечает...
А в общем случае, чтобы не теряться в догадках, что же там присутствует в тех файлах, пусть и с оговорками, проще сделать так:

Код:
function init-obj {
    $script:obj = [pscustomobject]@{
    'Name'=$null;'Given Name'=$null;'Additional Name'=$null;'Family Name'=$null;'Yomi Name'=$null
    'Given Name Yomi'=$null;'Additional Name Yomi'=$null;'Family Name Yomi'=$null;'Name Prefix'=$null
    'Name Suffix'=$null;'Initials'=$null;'Nickname'=$null;'Short Name'=$null;'Maiden Name'=$null
    'Birthday'=$null;'Gender'=$null;'Location'=$null;'Billing Information'=$null;'Directory Server'=$null
    'Mileage'=$null;'Occupation'=$null;'Hobby'=$null;'Sensitivity'=$null;'Priority'=$null
    'Subject'=$null;'Notes'=$null;'Language'=$null;'Photo'=$null;'Group Membership'=$null
    'Phone 1 - Type'=$null;'Phone 1 - Value'=$null;'Organization 1 - Type'=$null;'Organization 1 - Name'=$null
    'Organization 1 - Yomi Name'=$null;'Organization 1 - Title'=$null;'Organization 1 - Department'=$null
    'Organization 1 - Symbol'=$null;'Organization 1 - Location'=$null;'Organization 1 - Job Description'=$null
    }
}
function init-tmp {
    $script:tmp = new-object 'system.object[]' 3
}
$fld = 'test'
$flt = '*.php'
$out = 'test.csv'
 
if (test-path $out){del $out}
 
dir $fld\* -filt $flt -file|%{$arr=@()}{
    gc $_.fullname -enc utf8|%{$flg1,$flg2=$false,$false;init-tmp;init-obj}{
        if ($_ -match '<div class=\"username\"><h4>\s*(.*?)\s*<span class=\"position\">[^<]*</span></h4></div>'){
            $tmp[0] = $matches[1] # [0] Nickname
        }
        if ($tmp[0]){
            if ($_ -match '<dt>\s*Имя:\s*</dt>'){$flg1 = $true}
            if ($_ -match '<dt>\s*Телефон:\s*</dt>'){$flg2 = $true}
            if ($_ -match '<dd><a\s*href=\"[^\"]*\"\s*title=\"[^\"]*\">\s*(.*?)\s*</a></dd>'){
                $obj.Nickname = $tmp[0];$obj.Name = $tmp[1];$obj.'Given Name' = $tmp[1]
                $obj.'Phone 1 - Value' = $tmp[2];$obj.Notes = $matches[1] # [3] Notes
                $arr += $obj;init-obj;init-tmp
            }
        }
        if ($flg1){
            if ($_ -match '<dd>(.*?)</dd>'){
                $tmp[1] = $matches[1] # [1] Name, Given Name
                $flg1 = $false
            }
        }
        if ($flg2){
            if ($_ -match '<dd>(.*?)</dd>'){
                $tmp[2] = $matches[1] # [2] Phone 1 - Value
                $flg2 = $false
            }
        }
    }
}
 
$arr |export-csv $out -app -force -not -enc utf8

 
- с учетом того, что последовательность строк, содержащих требующиеся элементы, первого и последнего элемента группы, во всех файлах одинаковая, такая же как в выложенных образцах текста.
 
ЗЫ Немного оптимизации в алгоритме (убрал привязку к последовательности элементов внутри группы, но первый и последний элемент, должны присутствовать всегда) плюс косметика в оформлении... поправил.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:14 01-10-2018 | Исправлено: YuS_2, 08:33 01-10-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Цитата:
поэтому использовать его в шаблоне нельзя.  
 
 
Ты ошибаешься.
Командлет преднамеренно для того и придуман, чтобы избежать ручной мутотени с регэкспами и внутри себя использует машинное обучение.
 
Если он что-то недопонимает в исходном файле, достаточно увеличить длину шаблона (добавив вариации)
 
 

Цитата:
 И кроме того, на выходе человек хотел получить файл csv, определенного содержания...  

 
2) Файл CSV получается из PSObject | Export-Csv
1) Нужный PSObject получается из исходного PSObject | Select -Property $hashdefinition  
(в сложном _не_этом_ случае вместо селекта используется кастомная функция Get-Filtered)  
 
 
Проблема в том, чтобы заказчик подтвердил успешное получение исходных PSObject-ов из своих внешних исходников
(И это верно для любой задачи на использование повершела неизвращённым образом!  
В отличие от "языков сценариев", повершел предлагает стандартный общий язык-интерфейс между заказчиком и помогателем)
 
 
 
Добавлено:

Цитата:
А в общем случае, чтобы не теряться в догадках, что же там присутствует в тех файлах, пусть и с оговорками, проще сделать так:  

 
С точностью до наоборот!!
Для своей "простыни" ты потратил на порядок больше своего времени и когнитивных усилий, чем я для своей.
А результат вышел гораздо менее универсальный.

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 13:51 01-10-2018 | Исправлено: LevT, 14:18 01-10-2018
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ты ещё пяткой в грудь себя забыл постучать...
Т.е. всё, что не вписывается в твою личную теорию, будешь называть "извращенным способом"? В добрый путь...
 

Цитата:
Проблема

Нет, никаких проблем, кроме тех, что у тебя в голове...
Создай несколько файлов с однотипным содержанием и со строками, расположенными в различном порядке... это же .php все же. Можешь туда ещё чего нибудь добавить, всё на том же основании...
И попробуй их обработать своим кодом... результаты можешь проанализировать, если они будут...
 
Добавлено:

Цитата:
Для своей "простыни" ты потратил на порядок больше своего времени и когнитивных усилий, чем я для своей.

Минут 15-20, такого "драгоценного" времени... с тестированием и полученными результатами.
А ты?
Накидал пару строк, объявил их чудо-кодом, ничего не протестировал и выдал за истину. Так ведь?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:20 01-10-2018 | Исправлено: YuS_2, 14:24 01-10-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Цитата:
всё, что не вписывается в твою личную теорию, будешь называть "извращенным способом"? В добрый путь...  

 
Это теория экспертов powershell.org
 
 

Цитата:
Создай несколько файлов с однотипным содержанием и со строками, расположенными в различном порядке... это же .php все же.

 
ConvertFrom-String предназначен для извлечения объектов из структурированного текста.
Вручную, хаотическим образом написанный .php не является таковым.  
(Если у пейсателя руками хватило безалаберности перемешать порядок полей - то где гарантия, что он закрыл тэги? и т.д.)
 
Но и в этом случае - кроме самого жесткача - можно попробовать извлечь нужные PSObject-ы в несколько проходов разными шаблонами.
 
Также можно начать с добывания из исходников кусков именнно что структурированного текста.  
Вот тут как раз регэкспы в помощь.  
И эта задача (разбор вручную созданного хаоса) -  не юзерская, а девелоперская.  
"Готовый оттестированный скрипт" споткнётся на незакрытом тэге, и т.п.
 
 

Цитата:
Накидал пару строк, объявил их чудо-кодом, ничего не протестировал и выдал за истину. Т

 
Чудо-умением я называю умение разбирать этим командлетом собственные исходные тексты
Это удочка для самостоятельного использования, много более полезная и более милосердная к хелперам, чем попрошайничество готовых скриптов.  
 
Особенно для разбора "секретных" данных.

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 15:13 01-10-2018 | Исправлено: LevT, 15:38 01-10-2018
NIKZZZZ



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT

Цитата:
ConvertFrom-String предназначен для извлечения объектов из структурированного текста.  

php таковым не является, то-есть Ваше решение не имеет ни какого отношения к поставленной задаче.
Не надо подстраивать задачу под свое решение.
 

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:35 01-10-2018 | Исправлено: NIKZZZZ, 15:42 01-10-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
 
на предоставленном в студию примере работает )
А дальше дело заказчика - учиться ли пользоваться предоставленной ему удочкой, для реальных "секретных" данных.
 
 
Добавлено:
 

Цитата:
Не надо подстраивать задачу под свое решение.  

 
так работает повершел!  
Любая задача подстраивается под универсальную методологию:
 
1) получить PSObject-ы из внешних исходников
2) получить требуемые PSObject-ы из исходных
3) дернуть через них объекты внешнего мира, либо вывести нужную инфу в нужном формате.

Всего записей: 17149 | Зарегистр. 14-10-2001 | Отправлено: 15:42 01-10-2018 | Исправлено: LevT, 15:48 01-10-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru