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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Цитата:
Сам же агитировал за привлечение дотнета, не?  

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

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 10:25 09-03-2019
YuS_2



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

Цитата:
может какой самокатик есть..

есть-есть

Код:
cmd /c "dir /ad /r"

или прямо из cmd

Код:
dir /ad /r  

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:20 09-03-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Цитата:
есть-есть  
Эх.. Хотел дёшево отделаться

Код:
ls | gi -s * | ? stream -ne ':$Data' | % {"`nПоток: $($_.PSChildName)" ; Get-Content $_.pspath}

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 11:47 09-03-2019
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А есть способ сохранить в файл первые n записей $MFT?

Всего записей: 3025 | Зарегистр. 24-10-2002 | Отправлено: 12:00 09-03-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN
сохранить в файл можно всё, что можно узнать
Правильный вопрос: как узнать что-то?
 
Ответ в первой строчке гугловыдачи:
https://gist.github.com/secabstraction/4044f4aadd3ef21f0ca9
(заодно и сохряняет, но это уже блэкджеки и дамы высокой ответственности)
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 12:03 09-03-2019 | Исправлено: LevT, 12:16 09-03-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
YuS_2
Да, спасибо за примеры, но как раз надо поулчить максимальное значение в ключах. И выяснилось, что отсчет идет с a0, а не с a1, так что

Код:
 
$match = '^' + 'a' + '\d+'
[int]$end = ((Get-Item -Path "HKCU:\Software\Adobe\Adobe Acrobat\DC\AVGeneral\cCommonToolsDesktop").GetValueNames() | Where-Object {$_ -match $match}).Count
$end + 1
New-ItemProperty -Path "HKCU:\Software\Adobe\Adobe Acrobat\DC\AVGeneral\cCommonToolsDesktop" -Name "a$end" -Type String -Value Redo -Force
 

можно без $end + 1
 
И не ругаемся.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 13:20 09-03-2019 | Исправлено: farag, 13:27 09-03-2019
YuS_2



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

Цитата:
но как раз надо поулчить максимальное значение в ключах.

да, в личку написал, что такой пример не подойдет по таким требованиям и там немного другой вариант отправлял. Не подойдет потому, что если будет пропуск последовательности, то не получим максимального числа...
но, раз уж уточнение уже было, то и здесь оставлю, может кому пригодится ещё.
Такой вариант чуть надежнее, если присутствуют пропуски последовательности и не требуется их заполнение:

Код:
$pth = 'HKCU:\TEST'
$keyprop = 'a'
$regmtch = '^' + $keyprop + '(\d+)'
$arr = gi $pth
$end = ($arr.getvaluenames()|?{$_ -match $regmtch}|
%{[int]$matches[1]}|measure -max).maximum
$end++  
new-itemproperty $pth -n "$keyprop$end" -val "val$end" -prop 'string'

 

Цитата:
можно без $end + 1

можно и без него (см. выше)
только у меня было:

Код:
$end+=1

но если есть уверенность в строгой последовательности и отсчет начинается с 0, то инкрементацию в варианте с .count, можно совсем убрать...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:43 09-03-2019 | Исправлено: YuS_2, 14:48 09-03-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К давешнему вопросу , сходил по ссылке из ответа LevT , взял на вооружение Figure 1.
Как бы получше определять, требуется потоки у каталога или содержащихся в нём элементов, добавить переключатель, типа Recurse (true/false)?
 
path = "k:\файлу\путь.txt"
path = "k:\каталогу\путь"
 
Get-Streams([string]path)
{
    если (файл) {вернуть потоки файла}
    если (папка) {вернуть потоки папки}
    если (???) {вернуть потоки у всех файлов и папок внутри этой папки (не заходя в подпапки)}
    если (???) {вернуть потоки у всех файлов и папок внутри этой папки (и заходя во все/n уровней подпапки или это уже лишнее)}
}
 
Да, трудно быть домохозяином. Вместо одной строчки трубы, огородами..

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 13:32 10-03-2019 | Исправлено: iNNOKENTIY21, 13:40 10-03-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Какой ты нафиг домохозяй? Полез в реализацию повторных инстументов - велкам в мастера!
 

Цитата:
Как бы получше определять, требуется потоки у каталога или содержащихся в нём элементов

 
Думаю, что лучше обрабатывать всё, что ни прилетит из трубы (объекты типа [FileInfo] и [DirectoryInfo]: отбором их занимаются стандартные командлеты через провайдер Filesystem, делают это хорошо, пускай и дальше делают снаружи твоего инструмента.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 13:43 10-03-2019 | Исправлено: LevT, 13:46 10-03-2019
Smitis



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

iNNOKENTIY21

Цитата:
Какой ты нафиг домохозяй? Полез в реализацию повторных инстументов - велкам в мастера!

Поздравляю! Великий господин повысил Вас в звании! Похлопал по спине, потрепал за щёчку и даже дал ЦУ в стиле известного капитана.

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





Вроде просил же...

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 14:20 10-03-2019 | Исправлено: KLASS, 15:51 10-03-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Либо не ответ, либо я не понял
Прилетел из трубы каталог, выводить чего, его потоки непосредственно или перебирать файлы/подпапки в данном каталоге, как поведение менять/определять?
Или непосредственно поток у полученного элемента выводить, а если нужен перебор элементов, то сами в пошике циклом?

Цитата:
Полез в реализацию повторных инстументов

Ничего такого. В общем ничего сложного, сложно я не умею. Код как есть на данный момент. Может у кого зазудит

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 14:49 10-03-2019
LevT



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

Цитата:
а если нужен перебор элементов, то сами в пошике циклом?  

 

Код:
 
filter Get-Stream {
    switch ($_.GetType().Name) {
 
        'FileInfo' {'file'; break}
 
        'DirectoryInfo' {'directory'; break}
 
        default {'хрень какая-то'}
 
    }
Get-ChildItem| Get-Stream
 
 

 
 
Добавлено:
Понятно, что в конце концов захочется это оформить продвинутой функцией.
Но начинать можно прямо так.
 
 
Добавлено:
filter Get-Stream {
    $backupItem = $_
    switch ($_.GetType().Name) {
        'FileInfo' {'file: '+ $backupItem.Name; break}
        'DirectoryInfo' {"directory: $($backupItem.Name)}"; break}
        default {'хрень какая-то, но если у неё есть имя то вот оно: '+ ($backupItem | Select Name -ErrorAction 'SilentlyContinue')}
    }
}
 
как-то так...

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 14:59 10-03-2019 | Исправлено: LevT, 19:37 10-03-2019
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
https://github.com/p0shkatz/Get-ADS/blob/master/Get-ADS.ps1
не проверял

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 15:22 10-03-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA
Цитата:
https://github.com/p0shkatz/Get-ADS/blob/master/Get-ADS.ps1

Настораживает:
Цитата:
$streams = Get-Item $item.FullName -stream *
Имменно из за этого весь сыр бор, Get-Item игнорирует потоки у папок. Не понял сходу там это решается ли и как..

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 15:57 10-03-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Зато годный0 пример распаралеливания через ранспейсы

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 16:02 10-03-2019
YuS_2



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

Цитата:
может какой самокатик есть..

С помощью самокатика:
Скрипт для отображения имен альтернативных потоков файлов и каталогов... с помощью самокатика

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:46 11-03-2019 | Исправлено: YuS_2, 09:56 14-03-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мои две копейки
Переписал более человеческим языком часть того, что нагородил YuS_2
 
#
Подробнее...
 
Надо бы ещё почистить исходник от фуфлокода, дублирующего функциональность командлета Get-ChildItem...

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 02:33 14-03-2019 | Исправлено: LevT, 10:39 14-03-2019
NIKZZZZ



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

Цитата:
Мои две копейки
Переписал более человеческим языком часть того, что нагородил YuS_2

Запуск "батника" c помощью PS ?

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 03:06 14-03-2019
YuS_2



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

Цитата:
Переписал более человеческим языком

Сударь, вы написали фуфло, которое не работает, в отличие от того, что написал я...
это раз.
Во-вторых, ты написал лишние переменные, которые, собственно, нещадно жрут память.
В-третьих, ты всё напутал: FileInfo и DirectoryInfo - содержимое не соответствует названиям
Ну и если уж берешься что-то переписывать, не забывай снабжать комментариями то, в чем именно, как ты выражаешься, твое фуфло менее фуфло, чем мое...
 
NIKZZZZ

Цитата:
Запуск "батника" c помощью PS ?

батник там только для получения имён потоков каталогов, ибо "мудрые индусы" решили, что в dotnet это излишняя информация и не стали её реализовывать... ну, в CMD ведь уже есть такая возможность, зачем она ещё в dotnet-е...  
Хотя считывать и получать содержимое потоков, вполне есть возможность. Вот такие вот "последовательные" программисты теперь в микрософте, видимо учились у одних и тех же гуру, что и LevT...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:41 14-03-2019 | Исправлено: YuS_2, 07:50 14-03-2019
LevT



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

Цитата:
ты всё напутал: FileInfo и DirectoryInfo - содержимое не соответствует названиям

 
поправил  
 

Цитата:
фуфло, которое не работает, в отличие от того, что написал я...  

 
Зато теперь есть шанс, что кто-то ещё разберётся в мною написанном и доделает мною начатую переделку твоего исходника
Пока мне самому недосуг (ибо учусь разбраться в монадах и городить жавный синтаксис)  
 
 
NIKZZZZ
 
Всего лишь старт внешнего процесса cmd ради перехваченного вывода, не вызов сценария на егойной мове

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 08:51 14-03-2019 | Исправлено: LevT, 09:00 14-03-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 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