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

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

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

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

Код:
setlocal ENABLEDELAYEDEXPANSION
for /f "usebackq tokens=1,2 delims=.-" %%A in (`dir /B *.mp3`) do (
    set "AUTHOR=%%~A"
    set "TITLE=%%~B"
    call :MOVE_IT "!AUTHOR!-!TITLE!.mp3" "!AUTHOR:~0,-1!\!TITLE:~1!"
)
setlocal DISABLEDELAYEDEXPANSION
goto :EOF
 
:MOVE_IT
md "%~2"
move "%~1" "%~2"
goto :EOF


----------
http://www.imho.ws

Всего записей: 2388 | Зарегистр. 12-10-2006 | Отправлено: 20:09 06-03-2021
Taran2ul



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Спасибо. Только неправильно отрабатывает если название книги содержит дефис, запятую или точку.

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 21:16 06-03-2021
BorlandIMHO

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

Цитата:
неправильно отрабатывает если название книги содержит дефис, запятую или точку

А ещё дефис может содержаться в фамилии (и изредка даже в имени). И авторов может быть более чем один...
Систему с ИИ для таких случаев вообще проблематично сделать, не говоря уж о её реализации примитивными средствами...
Хотя проблема с точкой  решается довольно просто, её-то из delims убрать можно без напрягов:
Код:
setlocal ENABLEDELAYEDEXPANSION
for /f "usebackq tokens=1,2 delims=-" %%A in (`dir /B *.mp3`) do (
    set "AUTHOR=%%~A"
    set "TITLE=%%~nB"
    call :MOVE_IT "!AUTHOR!-!TITLE!.mp3" "!AUTHOR:~0,-1!\!TITLE:~1!"
)
setlocal DISABLEDELAYEDEXPANSION
goto :EOF
 
:MOVE_IT
md "%~2"
move "%~1" "%~2"
goto :EOF

А вот со всем остальным - если только сажать человека и на каждое перемещение спрашивать подтверждение типа «переместить "AUTHOR!-!TITLE!.mp3" в "!AUTHOR:~0,-1!\!TITLE:~1!"?» и все сложные случаи после такой "полуавтоматической обработки" - всё равно разгребать вручную...

----------
http://www.imho.ws

Всего записей: 2388 | Зарегистр. 12-10-2006 | Отправлено: 01:24 07-03-2021
Taran2ul



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Спасибо еще раз. "Остатков" и правда не много, разнесу потихоньку.

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 01:34 07-03-2021
icijafi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. Можете подсказать, почему данный сценарий не отправляет cookie? В остальном все работает нормально.
 

Код:
Invoke-WebRequest -Uri "https://example.com/" -Headers @{
"method"="GET"
  "authority"="example.com"
  "scheme"="https"
  "path"="/"
  "pragma"="no-cache"
  "cache-control"="no-cache"
  "sec-ch-ua"="`"Google Chrome`";v=`"89`", `"Chromium`";v=`"89`", `";Not A Brand`";v=`"99`""
  "sec-ch-ua-mobile"="?0"
  "upgrade-insecure-requests"="1"
  "user-agent"="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"
  "accept"="text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
  "sec-fetch-site"="none"
  "sec-fetch-mode"="navigate"
  "sec-fetch-user"="?1"
  "sec-fetch-dest"="document"
  "accept-encoding"="gzip, deflate, br"
  "accept-language"="ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"
  "cookie"="test1=none; test2=none"
}

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 08:07 07-03-2021
Mavrikii

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

Цитата:
Можете подсказать, почему данный сценарий не отправляет cookie?

для кук требуется аргумент -WebSession и кое что иначе
https://davidhamann.de/2019/04/12/powershell-invoke-webrequest-by-example/#sending-cookies-building-sessions

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 08:37 07-03-2021
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Taran2ul
Ответ от LevT
А с повершелом и переносить никуда не надо.
 
'C:\_Calibre2\' | Get-ChildItem -Recurse -Filter *.pdf | Out-GridView  
 
Таблицу можно сортировать и фильтровать.
Столбцы можно показать любые, в т. ч. и те что заказывали
 
'C:\_Calibre2\' | Get-ChildItem -Recurse -Filter *.pdf | Out-GridView -PassThru | Move-Item $destination
 
- таким образом можно выделить нужные строки, нажать на ОК и перенести их по назначению

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 09:58 07-03-2021
BorlandIMHO

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

Цитата:
можно выделить нужные строки, нажать на ОК и перенести их по назначению

Красиво.
Вполне понятно, что нужно сделать если $destination один на всё.
Но вот как разнести выбранное по папкам с созданием этих самых папок?..
Ну, и для простоты выбора "чё куда", в гриде "превью" имени папки для перемещения отобразить, тогда вообще решение близкое к идеальному получится...

----------
http://www.imho.ws

Всего записей: 2388 | Зарегистр. 12-10-2006 | Отправлено: 10:21 07-03-2021
icijafi

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

Цитата:
Для кук требуется аргумент -WebSession и кое что иначе
https://davidhamann.de/2019/04/12/powershell-invoke-webrequest-by-example/#sending-cookies-building-sessions

 
Mavrikii, спасибо за ответ. Можете помочь внести коррективы в данный код, чтобы он отправлял куки? Просто я в PowerShell полный нуль
 
 
 

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 10:53 07-03-2021
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Get-Drives.ps1
Как бы использовать, в коде выше,  фильтрацию без кучки $Filter `ов и кроме последовательных, друг за дружкой where, есть варианты?

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



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

Цитата:
кроме последовательных, друг за дружкой where, есть варианты?

Что-то типа:

Код:
function Get-Drives {
    param (
        [string] $Name = "*",
        [string] $VolumeLabel = "*",
        [string] $DriveFormat = "*",
        [System.IO.DriveType] $DriveType,
        [bool] $IsReady
    )
    $FilterScript = @'
        $_.Name -like $Name -and
        $_.VolumeLabel -like $VolumeLabel -and
        $_.DriveFormat -like $DriveFormat
'@
 
    switch ($PSBoundParameters.Keys) {
        DriveType { $FilterScript += ' -and $_.DriveType -eq $DriveType' }
        IsReady { $FilterScript += ' -and $_.IsReady -eq $IsReady' }
    }
    $filterscript = [scriptblock]::create($filterscript)
    [IO.DriveInfo]::GetDrives() | Where-Object -FilterScript $FilterScript
}

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2
Строки думал, но про [scriptblock]::create забыл, а так не кастуется

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 16:01 09-03-2021
YuS 2



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

Код:
function Get-Drives {
    param (
        [string[]] $Name='^.*',
        [string[]] $VolumeLabel,
        [string[]] $DriveFormat,
        [string[]] $DriveType,
        [bool] $IsReady
    )
    $FilterScript = '$_.Name -match $Name'
    switch ($PSBoundParameters.Keys) {
        VolumeLabel {
            if ($null -eq $VolumeLabel -or '' -eq $VolumeLabel){
                $FilterScript += ' -and $_.VolumeLabel -like $VolumeLabel'
            } else {
                $FilterScript += ' -and $_.VolumeLabel -match $VolumeLabel'  
            }
        }
        DriveFormat {
            if ($null -eq $driveformat -or '' -eq $driveformat){
                $FilterScript += ' -and $_.DriveFormat -like $DriveFormat'  
            } else {
                $FilterScript += ' -and $_.DriveFormat -match $DriveFormat'  
            }
        }
        DriveType { $FilterScript += ' -and $_.DriveType -match $DriveType' }
        IsReady { $FilterScript += ' -and $_.IsReady -eq $IsReady' }
    }
    $filterscript = [scriptblock]::create($filterscript)
    [IO.DriveInfo]::GetDrives() | Where-Object -FilterScript $FilterScript
}
 
Get-Drives -volume $null -drivetype 'fixed|cdrom' -driveformat 'ntfs|'| Format-Table

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:03 10-03-2021 | Исправлено: YuS 2, 10:10 10-03-2021
iNNOKENTIY21



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

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

Не через чур?
И коллекции лучше таки через запятую, это как бы более стандарт пошика, везде так, а про '|' в качестве разделителя, да в кавычках, знают гораздо меньше людей.
Ну и для сложных хотелок, всегда есть первый твой вариант и
Get-Drives | where DriveType -in fixed, cdrom | Format-Table
Вот от '| Format-Table' бы избавиться, но сохранив формат вывода таблицей и объект вывода System.IO.DriveInfo и без дополнительного файла с форматом

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 11:50 10-03-2021 | Исправлено: iNNOKENTIY21, 11:51 10-03-2021
YuS 2



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

Цитата:
И коллекции лучше таки через запятую, это как бы более стандарт пошика, везде так, а про '|' в качестве разделителя, да в кавычках, знают гораздо меньше людей.

Коллекции предполагал, но не тестировал и не пробовал даже... регэкспами получилось проще, понимают: $null, '', 'value|' и т.п.
 

Цитата:
Ну и для сложных хотелок, всегда есть первый твой вариант

да, операторы есть, можно попробовать, конечно и так...
 

Цитата:
Вот от '| Format-Table' бы избавиться, но сохранив формат вывода таблицей

можно и убрать, оформив его в месте вызова функции, если требуется...
 

Цитата:
и объект вывода System.IO.DriveInfo и без дополнительного файла с форматом

м-м-м, что-то сегодня туго соображаю - это про что?

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



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

Цитата:
м-м-м, что-то сегодня туго соображаю - это про что?

да xml формат описание для функции..Format.ps1xml

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



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

Цитата:
Вот от '| Format-Table' бы избавиться, но сохранив формат вывода таблицей и объект вывода System.IO.DriveInfo и без дополнительного файла с форматом

 
Если тебя не устраивает повершел движок (консольный хост), напиши свою либу ему в дополнение.
 
Или не используй его, дёргай пайплайны из того окружения которое устраивает.
    Может, и сам повершел в таком случае - сущность лишняя? Можно обойтись дотнетом
 
 
 
Добавлено:
YuS 2

Цитата:
м-м-м, что-то сегодня туго соображаю - это про что?

 
Про нейтивный способ выдачи в консоль типов, не предусмотренных в поставке повершел.
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 11:03 11-03-2021 | Исправлено: LevT, 11:06 11-03-2021
LevT



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

Цитата:
Красиво.
Вполне понятно, что нужно сделать если $destination один на всё.
Но вот как разнести выбранное по папкам с созданием этих самых папок?..
Ну, и для простоты выбора "чё куда", в гриде "превью" имени папки для перемещения отобразить, тогда вообще решение близкое к идеальному получится...

 
 
Прежде всего стоит переосмыслить, зачем вам собственно "разносить по папкам" контент?
Гуголь вот ничего не "разносит по папкам", и Everything тоже - а находится через них всё.  
 
Путь в файловой системе это всего лишь метаинформация о файле -
  важнейшая, но всего лишь одна из разновидностей метаинформации.  
Альтернативно можно смотреть на файлопомойку через "оптику" какой-нибудь проги типа Everything
 
Сортировка по папкам дело затратное и инвазивное,  
   в процессе можно ошибиться и что-то "упростить", потеряв часть прежней работы или подписав себя на ненужную работу в будущем.  
 
Когда нету возможности быстрого структурированного поиска в файлопомойке понятен зуд навести там хоть какую-то структуру.  Но ведь возможность такая есть!

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 08:02 12-03-2021 | Исправлено: LevT, 08:52 12-03-2021
BorlandIMHO

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Так можно и до предложения "использовать ReFS под файлопомойку" дойти...
 
В рамках FAT/NTFS/Ext3FS и т.п. файловых систем - файлы удобнее хранить распиханными по папкам.

Цитата:
Гуголь ... и Everything
- дело хорошее, и , возможно, даже может подменять собой системное окно открытия файлов - но это БД, требующая установки и проведения индексации для каждого вновь подключаемого носителя, что не всегда удобно.
А структура "дерево папок", в отличие от, выглядит одинаково на любой системе и не требует дополнительного софта и индексации.
И вопрос был о том, как привести файлопомойку к структурированному виду {по возможности более лёгким путём}, а не как что-то искать в неструктурированной...

----------
http://www.imho.ws

Всего записей: 2388 | Зарегистр. 12-10-2006 | Отправлено: 02:27 13-03-2021
rezorustavi



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток, дорогие друзья! Прошу прощение, что не в тему, как я вижу тут по батникам одни из лучших спецов.  
 
Есть совместно созданный с ребятами скрипт по отображении системной инфы:
 
https://disk.yandex.ru/i/PaXTbWpCe5WoEw
 
Есть такй трюк с живыми часами а батниках:
 
@echo off
for /f %%a in ('echo prompt $H^| cmd') do set "del=%%a%%a%%a%%a%%a%%a%%a%%a"
:loop
<nul set /p "=%del%%time:~,-3%"
>nul ping localhost -n 1
goto loop
 
Создайте батник с кодом выше и убедитесь, что работает! Это написал, так как многие думали, что это не возможно в cmd, bat...
 
Кто сможет, пожалуйста прикрутите живые часы вот сюда:
 
https://cdn1.radikalno.ru/uploads/2021/3/12/31c4c396bf2dbe05c5aabdbf1a7bcccd-full.jpg

Всего записей: 500 | Зарегистр. 05-09-2007 | Отправлено: 08:33 13-03-2021
Открыть новую тему     Написать ответ в эту тему

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