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

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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
try/catch. Но в catch надо конкретную ошибку указывать. Ловить название ошибок можно через  
 
$Error.Clear()
$Error.Exception.GetType().FullName

Всего записей: 2477 | Зарегистр. 27-07-2009 | Отправлено: 19:48 14-04-2023
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Это все не то, проверять можно и $LASTEXITCODE после каждого вызова, но хочется универсальности.
 
 
 
Добавлено:
Нашел решение https://stackoverflow.com/a/58184408
 
Добавлено:
Работает, но надо учитывать что у некоторых приложений (например, robocopy) коды возврата > 0 не являются признаком ошибки.

Всего записей: 4948 | Зарегистр. 05-01-2006 | Отправлено: 21:10 14-04-2023
westlife



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

Цитата:
но хочется универсальности.  

Не нашел универсальности. Все проги в разных случаях приводят к разным ошибкам в том числе в разных областях видимости и разные типы/виды ошибок. Поэтому использую под каждую утилиту свой метод, после тестов ее поведения в разных случаях.
В основном использую $Global:LASTEXITCODE (без global не видит часто в области запуска, думаю можно и $script: использовать зависит от сценария) или $?
Это касается запуска внутри PS утилит. а try/catсh без указания (может и с указанием) не видят такие ошибки, и в $Error нет записей. Если нужны подробные данные ошибок, а не просто есть или нет, если такими методами не понять, то надо делать парсинг вывода. В общем индивидуальный подход нужен.

Всего записей: 1390 | Зарегистр. 12-12-2006 | Отправлено: 16:31 15-04-2023
LevT



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

Цитата:
В общем индивидуальный подход нужен.

 
Ну или чтобы кто-то заморочился универсальной обёрткой.
Возможно, что-то сделано в Crescendo  
  https://devblogs.microsoft.com/powershell/native-commands-in-powershell-a-new-approach/

Всего записей: 17168 | Зарегистр. 14-10-2001 | Отправлено: 20:50 15-04-2023
lksp82

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди добрые, помогите.
 В сети накопал такой код:

Код:
 
@echo off
Setlocal EnableDelayedExpansion
 
for /f "usebackq delims=" %%a in (`dir /a-d /b /s "0\ad"`) do (
 
echo %%a|findstr /i /l /g:NotDelete.txt 2>nul 1>&2||del "%%a"
)
pause
 

 Пожалуйста подкорректируйте его (дополните, или предложите другое решение) так, чтобы:
 - удалялись все ПАПКИ и ФАЙЛЫ включая в подкаталогах с любыми атрибутами, КРОМЕ ПАПОК и ФАЙЛОВ указанных в NotDelete.txt
 - но так, чтобы в NotDelete.txt можно было указать исключаемые ПАПКИ и ФАЙЛЫ с относительными (по необходимости и абсолютными) путями. Например так:

Цитата:
 
1
2
3
new folder\0\1
new folder\0\2
new folder\0\3
1.txt
2.pdf
3.jpg
new folder\0\1.txt
new folder\0\2.pdf
new folder\0\3.jpg
C:\new folder\2\1.txt
C:\new folder\2\2.pdf
C:\new folder\2\3.jpg
 

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

Цитата:
 
Folder: 1
Folder: 2
Folder: 3
Folder: new folder\0\1
Folder: new folder\0\2
Folder: new folder\0\3
Files: 1
Files: 2
Files: 3
Files: 1.txt
Files: 2.pdf
Files: 3.jpg
Files: new folder\0\1.txt
Files: new folder\0\2.pdf
Files: new folder\0\3.jpg
Files: C:\new folder\2\1.txt
Files: C:\new folder\2\2.pdf
Files: C:\new folder\2\3.jpg
 

Всего записей: 47 | Зарегистр. 14-12-2015 | Отправлено: 16:52 16-04-2023
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lksp82
 
Если место для бэкапа этих избранных данных есть или его возможно организовать, то сама постановка вопроса изврат.
 
Ну, или чисто "спортивный" интерес.  
 
 
Добавлено:
 
2) Есть стандартный формат .gitignore    
Стоит с ним ознакомиться, если ещё не увязли в отсебятине "No delete".

Всего записей: 17168 | Зарегистр. 14-10-2001 | Отправлено: 17:31 16-04-2023 | Исправлено: LevT, 17:33 16-04-2023
lksp82

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Не силён я в этом. Потому пришёл за помощью.
Нужно именно так, как изложил выше, чтобы каждый раз не корректировать код и не раздувать пакетник...
Если есть мысли, подсобите. Согласен на любой вариант (bat/cmd/vbs).

Всего записей: 47 | Зарегистр. 14-12-2015 | Отправлено: 18:06 16-04-2023
BorlandIMHO

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

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

Всего записей: 2403 | Зарегистр. 12-10-2006 | Отправлено: 21:08 16-04-2023
lksp82

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Читал подобные советы, но там предлагали уже копирование нужных данных во временный каталог, затем подчистка, возврат копии обратно.
Этот метод может не подойти с объёмными данными, или если это производится в каталоге с программой... Плюс ко всему перезапись, фрагментация и пр.

Всего записей: 47 | Зарегистр. 14-12-2015 | Отправлено: 21:43 16-04-2023
BorlandIMHO

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

Цитата:
метод может не подойти с объёмными данными, или если это производится в каталоге с программой...

Т.е. конкретной задачи нет как таковой ("может быть это", "может быть то", "а может и не быть")...
Вам нужно ничто иное, как система ИИ (желательно с телепатическими способностями).
В рамках штатных скриптовых средств windows это практически нереализуемо.
Не, на powershell наверное можно что-нить похожее слепить, но трудозатраты, на мой взгляд, слишком великИ.
 
 
 
 
Добавлено:

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

Тоже вариант, кстати. Только лучше не копирование, а перемещение; и временный каталог на том же диске, что и очищаемый. Это существенно быстрее, особенно на больших файлах.
Или ещё более экзотическое решение - использование ссылок ntfs: "неубиваемые" файлы/папки лежат в другом месте (вплоть до "на другом диске"), в очищаемой папке лежат ссылки на них, после очистки ссылки создаются заново...
Но вот ИИ для разбора списка "notdelete.txt", насколько я понял, понадобится...

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

Всего записей: 2403 | Зарегистр. 12-10-2006 | Отправлено: 23:02 16-04-2023
LevT



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

Цитата:
Но вот ИИ для разбора списка "notdelete.txt", насколько я понял, понадобится...

 
Именно такой ИИ уже реализован внутри git.  
Но это бесполезно для пациента, который настаивает на самодельном формате.

Всего записей: 17168 | Зарегистр. 14-10-2001 | Отправлено: 11:28 17-04-2023
lksp82

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
BorlandIMHO
Такой вариант подходит.
Изначально просьба не моя, но судя по тестам человека вполне устраивает.

Код:
 
@echo off
SetLocal EnableExtensions
Setlocal EnableDelayedExpansion
 
cd /d "%~dp0"
 
set folder="papka"
For /F "delims=" %%a in ('dir /b/s/ad "%folder%\*" ^| findstr /ELIVG:"Folders.txt"') do rd /s /q "%%a"
 
for /f "usebackq delims=" %%a in (`dir /a-d /b /s "papka"`) do (
echo %%a|findstr /i /l /g:"Files.txt" 2>nul 1>&2||del "%%a"
)
 
pause
 

- в Folders.txt файле:
papka\2
papka\2\1
papka\3
papka\4
 
- в Files.txt файле:
papka\2\2.txt
papka\2\1\3.txt
papka\4\4
 
Просьба к форумчанам грамотно организовать код в единый bat/cmd
Сами коды из сети (от разных авторов, и разных источников)

Всего записей: 47 | Зарегистр. 14-12-2015 | Отправлено: 13:13 18-04-2023
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, пожалуйста помогите примером, каким образом на PowerShell получить значение параметра "*.ini-файла" в переменную сценария.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 09:26 23-04-2023 | Исправлено: Artem_Butenko, 09:27 23-04-2023
qw12



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

Код:
# Указываем путь к INI-файлу
$IniFilePath = "C:\Path\To\File.ini"
 
# Указываем секцию и параметр, значение которого нужно получить
$Section = "SectionName"
$Param = "ParameterName"
 
# Получаем значение параметра из INI-файла
$ParamValue = Get-Content $IniFilePath | Where-Object { $_ -match "^\s*$Param\s*=" } | ForEach-Object { $_ -replace "^\s*$Param\s*=" }
 
# Выводим значение параметра на экран для проверки
Write-Host "Значение параметра '$Param' равно '$ParamValue'"
 
# Сохраняем значение параметра в переменную сценария
$ScriptVariable = $ParamValue
 

Всего записей: 601 | Зарегистр. 04-06-2001 | Отправлено: 12:18 24-04-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Цитата:
Ребята, пожалуйста помогите примером, каким образом на PowerShell получить значение параметра "*.ini-файла" в переменную сценария.

Встроенных прямых средств нету. Все велосипеды строят.
Велосипед от сотрудника Microsoft: https://github.com/ChadMcCaffery/MiscPowershell — там и ini и inf.
 
пример:
для примера взял файл от foobar2000 installer.ini
 

Код:
$foobar2000_installer = .\Read-IniFile.ps1 .\installer.ini
 
# получить элементы из секции InstalledComponents
$foobar2000_installer.InstalledComponents
 
# получить значение foo_unpack
$foobar2000_installer.InstalledComponents.foo_unpack

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 00:35 25-04-2023 | Исправлено: iNNOKENTIY21, 00:46 25-04-2023
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qw12
 
Огромное Вам спасибо Специалист! Данный сценарий PowerShell работает на 100%, в "*.ini-файле" можно оставлять комментарии (;).
Последовательно возникла идея, можно ли реализовать следующий алгоритм:
1. Получать значение параметров из "*.ini-файла" с именем файла сценария PowerShell.
2. Если "*.ini-файл" отсутствует рядом с файлом сценария PowerShell, и (или) структура секций повреждена, то, в таком случае, создать "*.ini-файл" с именем файла сценария PowerShell и стандартным содержимым, например..
3. Можно ли управлять выполнением конкретного участка сценария PowerShell из "*.ini-файла", например.
 
Буду Вам очень признателен за помощь.
 
iNNOKENTIY21
 
Благодарю Вас! Ранее не нашел ссылки на данную конструкцию, постараюсь её изучить завтра. Пожалуйста, присоединяйтесь к обсуждению.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 01:07 25-04-2023 | Исправлено: Artem_Butenko, 01:14 25-04-2023
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Для своего файл параметров, ini устарел и в powershell не используется.
 
Есть встроенные средства для:
psd1 — о файлах данных - PowerShell, Import-PowerShellDataFile
json — ConvertFrom-Json, ConvertTo-Json
 
http://ramblingcookiemonster.github.io/PowerShell-Configuration-Data/

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 20:58 25-04-2023
toadmr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Я хочу, чтобы веб-сервер отдавал данные, которые получает скрипт и обновлял их через определенное количество времени.
Т.е. есть БД, в которой каждые 10 минут могут происходить изменения.
Я опрашиваю эту БД в PowerShell и результат помещаю в переменную.
Эту переменную я указываю как данные для веб-сервера.
Как мне заставить PODE обновляться каждые "N" минут или организовать работу скрипта для динамического обновления?
Пример кода запроса из БД (данные абстрактные):
Подробнее...

Всего записей: 21 | Зарегистр. 12-04-2023 | Отправлено: 14:37 02-06-2023 | Исправлено: toadmr, 15:46 02-06-2023
toadmr

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

Всего записей: 21 | Зарегистр. 12-04-2023 | Отправлено: 17:32 08-06-2023
pressF



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите команду в powershell для получения a) списка папок и подпапок в древовидном виде, типо такого https://i.stack.imgur.com/a2Nsj.jpg b) списка папок и подпапок с файлами в древовидном виде, типо такого https://i.stack.imgur.com/fFqg5.jpg
и чтобы в итоговом файле прописывалось кол-во папок и файлов.
 
И может есть ещё опция какая для построения HTML или MD документа такого вида?
https://images2.imgbox.com/5e/09/jSjLxPkt_o.png
Ибо plaintext не всегда удобен для восприятия.
 
И ещё, при использовании команды tree /F > 12345.txt находясь в папке с кириллическим названием получаются на выходе кракозябры, в самой консоли отображается всё корректно. Как это можно исправить?


Кстати, это что за штука? https://docs.powershelluniversal.com/userinterfaces/components/data-display/tree-view
типо менеджер команд который через апи работает и передаёт команды на исполнение в консоль?

Всего записей: 1121 | Зарегистр. 29-03-2023 | Отправлено: 18:56 20-06-2023 | Исправлено: pressF, 18:56 20-06-2023
Открыть новую тему     Написать ответ в эту тему

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