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

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

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



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

Цитата:
в конечном счете все файлы должны иметь вид "Ааа Bbb Ccc.txt"

У меня так получилось. Всё от того, что регулярки не умею
Код:
$Names = @(
    "Ааа Bbb Ccc.txt"
    "aаа bbb ccc.txt"
    "Ааа bbb ccc.txt"
    "aаа Bbb ccc.txt"
    "aаа bbb Ccc.txt"
    "AAA bbb CCC.txt"
    "AAAAAA.ps1"
    "ннннн аапрет"
    ".а с точки"
    ". а с точки пробела"
    " а с пробела"
)
 
$Names += (Get-ChildItem $env:tmp).BaseName
 
$NewNames = foreach ($Name in $Names) {
    $Words = $Name.Split()
    $Result = @()
    foreach ($Word in $Words) {
        if (([char[]]$Word).Count -gt 0) {
            $Char = ([string] $Word[0]).ToUpper()
            if (([char[]]$Word).Count -gt 1) {
                $WordLength = $Word.Length - 1
                $Result += $Char + (-join $Word[1..$WordLength]).ToLower()
            } else {
                $Result += $Char
            }
        }
    }
    [PSCustomObject]@{
        Name    = $Name
        NewName = $Result -join ' '
    }
}
 
$NewNames

Всего записей: 3505 | Зарегистр. 16-08-2012 | Отправлено: 21:49 08-07-2019
Tiikker



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2, вот спасибо! Я бы сто лет ковырялся...

Всего записей: 956 | Зарегистр. 05-06-2018 | Отправлено: 22:16 08-07-2019
farag



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

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 22:48 08-07-2019
YuS_2



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

Цитата:
Правда, то выражение апостроф принимает за неправильный символ.

с регэкспами? Тут примеры нужны...  
По идее, апостроф - разделитель и если слово будет выглядеть так: "N'ame", то естественно, регвыр сработает на нем, т.к. присутствует целое слово "ame" начинающееся на строчную букву.
Но тут всё зависит от задачи, такие ситуации можно предусмотреть и исключить. В общем, нужны только примеры того, что требуется в итоге получить.

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Ну, например, "Trouble Walkin'.flac"

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



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

Цитата:
Trouble Walkin'.flac

А, что здесь не так? Регулярка разве срабатывает на таком файле?

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



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

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:00 09-07-2019
YuS_2



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

Цитата:
Угу.

И всё?
А показать как это происходит?
У меня, например, не срабатывает ни в PS v 5.1, ни в PS v2.0


т.е. в данном случае, проблема не в регулярке...
 
 
А чтобы не срабатывало на Д'артаньяне (если конечно, это правильно... в чем я сомневаюсь), как я выше описывал, то регулярку можно поправить на такую:

Код:
dir d:\ -file|? basename -cmatch "(?<!\p{Lu}('|``))\b\p{Ll}\w*"

и она пропустит такие сочетания...

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Понял, что после ' считает новое слово в названии, например "Things Money Can't Buy". Если сделать "Things Money Can'T Buy", то не выводит.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 14:57 09-07-2019
YuS_2



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

Цитата:
Понял, что после ' считает новое слово в названии, например "Things Money Can't Buy". Если сделать "Things Money Can'T Buy", то не выводит.

Да, именно так. Апостроф является разделителем, поэтому после него, уже новое слово.
Но тут важно другое - как надо, чтобы было правильно?
Т.е. Can't - единое слово и такое должно быть пропущено?
Но тут, по-моему, может возникнуть проблема с обратным просмотром, т.к. в нем шаблон должен быть фиксированным...  
В общем, надо вводные - как должно быть, а там подумаем, что можно сделать.

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Цитата:
Выглядит инфернально))
Не так уж и адово, всего два цикла и парочка условий

Всего записей: 3505 | Зарегистр. 16-08-2012 | Отправлено: 17:12 09-07-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
тут подумалось... можно ведь любой ненужный разделитель просто удалить из отбора, примерно так:

Код:
dir d:\ -file|?{($_.basename -replace "'|``") -cmatch "\b\p{Ll}\w*"}

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Вот это уже лучше. Что-то не понял, что означает '|``.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 10:31 10-07-2019 | Исправлено: farag, 10:32 10-07-2019
sc2love

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток всем, ОС Win10 1903 режет скорость отдачи в интернет
 
Windows 10 upload
[SPOILER]https://i.ibb.co/PMzqW14/test1.jpg[/SPOILER]
Linux upload
[SPOILER]https://i.ibb.co/VCq4Kzw/test2.jpg[/SPOILER]
 
 
Драйвера менял, в безопасном режиме тоже самое, дуплекс есть, Чистая ОС!
Подскажите куда копать? :cry:

Всего записей: 1 | Зарегистр. 10-07-2019 | Отправлено: 11:20 10-07-2019
YuS_2



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

Цитата:
не понял, что означает '|``

шаблон с перечислением, т.е. перебор вариантов "'" (апостроф) и "`" (обратный апостроф), обратный апостроф служит символом экранирования в powershell, поэтому он заэкранирован для представления самого себя.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:35 10-07-2019 | Исправлено: YuS_2, 11:36 10-07-2019
farag



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

Цитата:
шаблон с перечислением

Ну, это я понимаю).
Как добавить в шаблон, например, знаки "(" и ")"? Я запутался в символах...

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:27 10-07-2019
westlife



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

Цитата:
Как добавить в шаблон, например, знаки "(" и ")"? Я запутался в символах...

Экранировать \

Всего записей: 1390 | Зарегистр. 12-12-2006 | Отправлено: 15:00 10-07-2019
YuS_2



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

Цитата:
Как добавить в шаблон, например, знаки "(" и ")"? Я запутался в символах...

Вообще, выше правильно подсказывают, хоть и ссылку лучше не туда давать:

Цитата:
Обратите внимание, что для регулярных выражений используется escape-символ обратная косая черта (\), отличный от используемого в Windows PowerShell. В Windows PowerShell в качестве escape-символа используется обратный апостроф (`) (код ASCII 96).

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

Код:
dir -file|?{($_.basename -replace "``|['()]") -cmatch "\b\p{Ll}\w*"}

или даже так:

Код:
dir -file|?{($_.basename -replace "[``'()]") -cmatch "\b\p{Ll}\w*"}

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



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

Всего записей: 3505 | Зарегистр. 16-08-2012 | Отправлено: 07:15 11-07-2019
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
 
Решил сделать мониторинг хостов в PS.
Собственно сам код:

Код:
 
$date = Get-Date -Format T
 
switch ($false) {
1 {Test-Connection -ComputerName 111}
2 {Test-Connection -ComputerName 222}
3 {Test-Connection -ComputerName 333}
}
Send-MailMessage -From user@domain.ru -To user@domain.ru -SmtpServer server.domain.ru -Subject "ВНИМАНИЕ!!! Houston, we have a problem"
 

 
Подскажите пожалуйста, как мне сделать, чтобы, когда выполняется условие, в тело письма вставлялось имя компа?
Как мне задать переменную?
 
 
Добавлено:
Как бы, я решил данную проблему иначе.
типа:

Код:
 
if (!(Test-Connection -ComputerName 111))(Send-MailMessage -From user@domain.ru -To user@domain.ru -SmtpServer server.domain.ru -Subject "ВНИМАНИЕ!!! Houston, we have a problem" -Body "Сервер 111 недоступен; $date";}
 

 
но список из 30 и более компов становиться достаточно громоздким...

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 20:21 23-07-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