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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
iNNOKENTIY21



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

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

Цитата:
все просто, раз включил компьютер и скрипт отработал, значит рабочий )
Ну а если запуск произошел не в рабочий день, то ручками корректируем файл dump.tmp.

А если ребут… тренируем память не забыть поправить dump.tmp?  
Уже натренировали поди и помним о событии 3 дня без подсказки ?
А кроме шуток.
 
    Я на батнике не сделаю,но делал бы как то так:
  • выполняем, что то полезное, напоминание…
  • вычисляем дату следующего напоминания (с учётом праздников и их переноса в случае если выпало на выходной, возможно вычислять раз в год, а потом пользоваться датами… но это детали реализации)
  • создаём задачу в планировщике на ранее вычисленную дату (одноразовую, после выполнения удалить, в качестве задания указать этот батник)


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



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

Цитата:
А если ребут… тренируем память не забыть поправить dump.tmp?

Дык, датаже - если совпадает, счетчик не плюсуем...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:54 23-10-2019
Falcon99



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

Цитата:
А если ребут… тренируем память не забыть поправить dump.tmp?  

 

Цитата:
Дык, датаже - если совпадает, счетчик не плюсуем...

 
Именно, для того и стоит проверка текущей даты с той что записана в файле.
 
Добавлено:

Цитата:
Я на батнике не сделаю,но делал бы как то так:
выполняем, что то полезное, напоминание…
вычисляем дату следующего напоминания (с учётом праздников и их переноса в случае если выпало на выходной, возможно вычислять раз в год, а потом пользоваться датами… но это детали реализации)
создаём задачу в планировщике на ранее вычисленную дату (одноразовую, после выполнения удалить, в качестве задания указать этот батник)  

 
Честно говоря, даже не представляю как это можно сделать.

Всего записей: 607 | Зарегистр. 12-10-2005 | Отправлено: 13:27 23-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2, Falcon99
Тут про долю шутки в истине
 

Цитата:
Честно говоря, даже не представляю как это можно сделать.

Да я тоже, так мысля вырвалась в слух
Трудности в вычислении следующей даты, а точнее в списке не рабочих дней.
Если сделать, скачать, такой список, то к текущей дате прибавляем нужное число дней и проверяем по списку не рабочих дней,
    если выпало на не рабочий, то еще раз +1 и еще раз проверяем,
        пока не будет совпадения со списком (попадём таки на рабочий день.)

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



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

Цитата:
Трудности в вычислении следующей даты

Тут будет трудность в вычислении рабочих дней именно (ручной труд в составлении календаря на определенный период, год-два-три и т.д.), а в составлении алгоритма их подсчета, особых затруднений, наверное, не будет.
Здесь, как раз, тот случай, когда проще  считать запуски компьютера:
1. Запускаем.
2. Выполняем скрипт.  
3. Проверяем флаг. Условный блок
    а) Если флага нет - создаем и плюсуем счетчик (рабочий день). Переход к п.4
    б) Если флаг есть - сверяем дату. Условный блок.
        б.1) Если совпадает - ничего не делаем. Переход к п.5
        б.2) Если не совпадает - плюсуем счетчик (рабочий день). Переход к п.4
4. Проверяем счетчик, если равно 3, выдаем сообщение и удаляем флаг.
5. Выход.
Если перезапуск - Переход к п.1

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:45 23-10-2019
danetz

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, подскажите почему не работает такоe:
echo color 3>c:\1.bat

Всего записей: 400 | Зарегистр. 25-02-2012 | Отправлено: 20:12 24-10-2019
YuS_2



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

Цитата:
почему не работает

патамушта:

Цитата:
3>

https://msdn.microsoft.com/ru-ru/windows/desktop/cc772622

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скрипт для копирования, используя теневую копию: Copy-FromShadowCopy.ps1
 
При -WhatIf копирование не происходит, но теневая копия все равно создаётся и затем удаляется. Что бы с этим сделать, да так, что бы не поломать информацию о копировании (откуда/куда)?

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 22:36 24-10-2019 | Исправлено: iNNOKENTIY21, 22:47 24-10-2019
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Не заметил метод ShouldProcess()
 
https://vexx32.github.io/2018/11/22/Implementing-ShouldProcess/

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 00:38 25-10-2019
YuS_2



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

Цитата:
При -WhatIf

Ещё здесь немного можно почитать, по-русски.

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA, YuS_2 - спасибо, принял.
Интересно как выводить инфу, теневая копия создаётся со счётчиком (теневая копия 1-датаВремя; теневая копия 2-датаВремя; и т.д.).
Получить реальный счётчик хз как, заменять типа ТутБылСчётчик?


И сейчас параметры принимает @{
  source = @(path1, path2,…)
  destination = path
}
 
А хочется @(@{
  source = @(path1, path2,…)
  destination = path
},
@{
  source = @(path3, path4,…)
  destination = pathAnother
},
…и т.д.)
 
Добавлено:
спустя 23 минуты…
Может кому любопытно, что да как, скриншоты visual studio code

 
Добавлено:
Спустя еще полчаса
*что да как пишу, чем пользуюсь при этом.

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Я что-то идею не совсем понимаю.
Это нужно для копирования открытых файлов?

Цитата:
 
А хочется @(@{
  source = @(path1, path2,…)
  destination = path
},
@{
  source = @(path3, path4,…)
  destination = pathAnother
},
…и т.д.)  
 

Откуда планируется брать данные?

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 17:04 25-10-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Что-то мало информации... что именно не получается?
 

Цитата:
А хочется @(@{

Так в чем проблема?

Код:
PS_5.1> $a = @(
>> @{
>> source = @('path1', 'path2')
>> destination = 'path'
>> },
>> @{
>> source = @("path3", "path4")
>> destination = "pathAnother"
>> }
>> )
PS_5.1> $a.count
2
PS_5.1> $a.source.count
4

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA
Цитата:
Это нужно для копирования открытых файлов?  

Ну да, копировать из теневой, дабы не нарываться на занято…
Цитата:
Откуда планируется брать данные?

Да откуда угодно. Указываешь путь, создаётся теневая копия диска (диск из указанного пути берётся), Путь заменяется в части диска на теневую копию и копируется уже из теневой копии в указанное назначение.
Вот, полезно проговаривать… пришла мысля, что надо добавить проверку, а можно ли для диска создавать теневую копию, может указали и не NTFS вовсе…
 
YuS_2
Массив с хеш таблицей как бы сделать не проблема, проблема передать в качестве параметра скрипту и что бы он это обработал, сохранив текущий функционал

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



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

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

А-а-а, вон чего надо...
Тогда сплаттинг:

Код:
$a = @(
    @{
        source = @('path1', 'path2')
        destination = 'path'
    },
    @{
        source = @("path3", "path4")
        destination = "pathAnother"
    }
)
 
#$b =@($a.source,$a.destination)
#Хотя, правильнее будет так, чтобы параметры были именованными:
$b = @{}
$b.source = $a.source
$b.destination = $a.destination
 

 
и передаем скрипту:

Код:
[CmdletBinding(SupportsShouldProcess)]
param (
    # Что копировать. Массив полных путей. Полные пути из конвейера
    [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
    [ValidateNotNullOrEmpty()]
    #[string[]]
    [Alias("FullName")]
    $Source,
 
    # Куда копировать. Полный путь к папке назначения
    [Parameter(Mandatory)]
    [ValidateNotNullOrEmpty()]
    #[string]
    $Destination
)
'===источник==='
$source
'===приемник==='
$destination

 
Результат:

Код:
 
PS_5.1> .\test.ps1 @b
===источник===
path1
path2
path3
path4
===приемник===
path
pathAnother

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:23 25-10-2019 | Исправлено: YuS_2, 18:31 25-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Интересно, но не понятно, а как это работает?

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



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

Цитата:
а как это работает?  

Дык, сплаттинг же...

Код:
man about_Splatting -s

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Не понятно как массив хеш таблиц перебирается?
м. оно же теряет связь пары источник1,источник2=назначение?
 
Добавлено:
Из твоего примера надо $a[0], в общем $a в цикле перебирать и давать скрипту.
Но так будет создаваться теневая копия в каждом цикле.
 
Добавлено:
Если бы так, как у тебя в примере, зачем массив хеш таблиц тогда городить.
Сразу у $a убрать массив, сделав простой хеш таблицей и добавить и все туда.. "path3", "path4

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



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

Цитата:
м. оно же теряет связь пары источник1,источник2=назначение?  

Естественно, это же массив и два разных параметра...
А если требуется сохранять соответствие, то в этом случае подойдет именно и только цикл с перебором элементов массива... а из цикла уже вызывать функцию.
 

Цитата:
Но так будет создаваться теневая копия в каждом цикле.

Почему? Это по сути, то же самое, что передать скрипту массив источников и целевой путь.
Остальное - внутреннее дело скрипта.  
Если требуется сохранение соответствия, то другого пути не будет.
 

Цитата:
Но так будет создаваться теневая копия в каждом цикле.

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

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:40 25-10-2019 | Исправлено: YuS_2, 21:41 25-10-2019
PhoenixUA



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

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

я поэтому и спросил

Цитата:
Откуда планируется брать данные?


Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 21:44 25-10-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