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

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

Открыть новую тему     Написать ответ в эту тему

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

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



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

Цитата:
Но только если начать с понимания, что некоторые "символы" Char-am рознь, и являются _непосредственно живым_ представлением сути вещей

Остапа понесло...

 
/offtopic off

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:56 26-08-2018 | Исправлено: YuS_2, 07:56 26-08-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
 
Да, я отдельно настаиваю: затруднение с которым столкнулся farag коренится не в "сценариях", не в "языках" и даже не в типах данных (System.Char, тот самый) - а недопонимании предметной области.
 
В отличие от "языков сценариев", повершел помогает в изучении предметных областей.
Это если поменьше слушать "сценаристов языками" и  
     побольше интерпретировать выдачу и т.п. "тыкать палочкой", короче изучать PS-движок





Я тоже настаиваю, но что толку... недельный перекур

Всего записей: 17740 | Зарегистр. 14-10-2001 | Отправлено: 13:58 26-08-2018 | Исправлено: KLASS, 14:08 26-08-2018
Baltazar500



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так, на сей раз проблема с правами, владельцами и изменением библиотек в c:\Windows\winsxs (оттуда в c:\windows\system32 идут хардлинки). Изменять планируется данной тулзой поменяв одно хекс-значение на другое. Если на windows xp с патчингом аналогов в C:\windows\system32 не было никаких проблем, то на 7-ке там хардлинки, владельцы, контейнеры и прочий гемморой, а также туча зависимостей у библиотек, у которых ранее их не было и отказ которых (ввиду потери прав) ведёт к неприятным последствиям для системы
 
Так вот, что я натворил до этого - решив воспользовать опытом скрипта заменителя notepad'a на notepad++ я через
Код:
takeown /f xxx.dll
сделал себя владельцем файла, после через
Код:
cacls xxx.dll /grant %USERNAME%
стал полным и единственным владельцем этого файла, но при попытке использования вышеозначенной утилиты (по ссылке) я тем не менее ловлю при перезаписи исходного файла
Код:
could not open file for write
(%%i на %%i), что в данном случае не хватает и как всё сделать правильно ? И да - если я что-то неверно понял в случае с takeown/cacls - поправьте меня.
 
То, как я восстанавливал права на файл - отдельная история. Через icalcs /save я задампил права смежного файла  - до этого я просматривал вкладку безопасность и её содержимое не отличалось от модифицируемого файла, после чего подправив в дампе имя файла восстановил владельцев/контейнеров через /restore, далее через takeown задал основного владельца со всеми правами и вручную добавил остальных, что были ранее, с теми же правами (кстати, подскажите, как это сделать через консоль ). После этого всё что отвалилось после потери прав - заработало.

Всего записей: 2309 | Зарегистр. 19-09-2011 | Отправлено: 17:52 05-09-2018 | Исправлено: Baltazar500, 17:55 05-09-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Baltazar500
на MDL сочинили и юзают некий "SxS экстрактор" - которым например выдирают из 2016 сервера пакеты, которые потом штатно добавляются в десятку.  (Такие, как дедупликация или фейловер кластер)
 
Если бы я вдруг захотел лезть в winsxs - я бы начал с обогащения себя знаниями, и для начала разобрался бы, что и как сделано там.
 
Смените оптику: винда состоит не (только) из файлов "с пермишенами и прочими геморроями".
После XP она состоит из пакетов.
Которые управляются более другими рукоятками, чем давно протухший deprecated cacls, takeown и тп
Для новых сущностей - новые рычаги управления.
(И да, сначала майки добавляют новые сущности, а управлялки к ним добавляют постепенно c новыми OC: потому семёрка сосёт, так как управлять содержимым её winsxs умеет лишь сотня яйцеголовых в Редмонде)
 
Не пора ли обратить внимание на окружающую реальность?

Всего записей: 17740 | Зарегистр. 14-10-2001 | Отправлено: 17:43 06-09-2018 | Исправлено: LevT, 18:06 06-09-2018
NIKZZZZ



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

Цитата:
сделал себя владельцем файла, после через

А к чему такие сложности?
Не проще ли запустить батник с правами TrustedInstaller ?

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:58 06-09-2018 | Исправлено: NIKZZZZ, 18:58 06-09-2018
Baltazar500



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT,
Цитата:
После XP она состоит из пакетов.
Я в такие дебри обычно не лезу, но вот понадобилось мне автоматом пропатчить hex-значения в наборе библиотек и нахрапом задачу не удалось решить.
 
На одной машине с 7-й я сделал это грубо и вручную, теперь хочу автоматизировать процесс, дабы всё было красиво и цивильно в виде batch-скрипта. Вопрос в том как и какими инструментами это сделать.
Цитата:
Которые управляются более другими рукоятками, чем давно протухший deprecated cacls, takeown и тп
Какие ?
Цитата:
И да, сначала майки добавляют новые сущности, а управлялки к ним добавляют постепенно c новыми OC: потому семёрка сосёт, так как управлять содержимым её winsxs умеет лишь сотня яйцеголовых в Редмонде
Я не в курсе перепетий с winsxs и т.д. и т.п - искомые библиотеки лежали в C:\Windows\system32, которые были залинкованы на файлы в winsxs, которые я и решил патчить.
 
NIKZZZZ, Я ХЗ я в область манипуляций системными файлами через консоль никогда не лез, потому и не в курсе был, как изменять и модифицировать их под скриптами - это был так сказать первый блин комом.
 
Спасибо буду пробовать

Всего записей: 2309 | Зарегистр. 19-09-2011 | Отправлено: 19:01 06-09-2018 | Исправлено: Baltazar500, 19:09 06-09-2018
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Недостаточно хорошо знаком  с языком и особенностями Bat-файлов, может кто подскажет как мелочевку сделать?  
Есть куча папок с рандомными названиями, в каждой папке лежит папка ggg и куча ещё всякого мусора.  
Нужно пройтись по всем папкам, вытащить из ggg все файлы и поместить их в корень этих папок, а все остальное, включая ggg - удалить.  
 
Как по простому такое сделать? На PHP бы я быстро бы это написал, но это неудобно, а с батниками слабо знаком.

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 15:45 09-09-2018
Taran2ul



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Помогите написать скрипт (желательно на bat) для переименования файлов из:

Код:
[+375 00 111-22-33]_2016-09-26_09-20-33_[+375001112233].mp3
Формат:
[<инфо>]_ГГГГ-ММ-ДД_ЧЧ-ММ-СС_[<телефон>].<формат>

в такой вид:

Код:
1474870833-0-+375001112233.mp3.crtemp
Формат:
<unix-time>-0-<телефон>.<формат>.crtemp

Еще нужно ввести поправку по времени для часового пояса. У меня GMT+3, поэтому время в unix формате меньше на 3 часа. И в результирующем имени вместо ноля (после времени) иногда нужно будет ставить один, поэтому можно ввести переменную вначале (или вручную потом поменяю).
Заранее благодарен.

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 17:32 09-09-2018 | Исправлено: Taran2ul, 17:33 09-09-2018
YuS_2



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

Цитата:
вытащить из ggg все файлы и поместить их в корень этих папок

т.е. переместить на один уровень выше ggg или таки в корень поиска?
И ещё вопрос, вытекающий из предыдущего вопроса-ответа:

Цитата:
все остальное

Всё остальное - это каталог(и) ggg с содержимым или же все подкаталоги с содержимым, от корня поиска?
 
Добавлено:
Taran2ul

Цитата:
желательно на bat

желательно или только?
 

Цитата:
Еще нужно ввести поправку по времени для часового пояса.

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

Код:
2016-09-26_09-20-33
 
09/26/2016 @ 6:20am (UTC)
 
1474870833

- если отнять три часа (в любой строке и в любом формате), то поплывут все показания часов.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 06:27 10-09-2018 | Исправлено: YuS_2, 06:46 10-09-2018
xerpal



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

Цитата:
т.е. переместить на один уровень выше ggg или таки в корень поиска?

На один уровень выше. То есть в корни этих папок рандомных.
 

Цитата:
Всё остальное - это каталог(и) ggg с содержимым или же все подкаталоги с содержимым, от корня поиска?

Чтобы остались только те файлы, которые в ggg были.

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 07:45 10-09-2018
Taran2ul



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

Цитата:
желательно или только?

Если это реализуемо (без излишнего усложнения) на bat, то "только".
 

Цитата:
вопрос только в обратном преобразовании

Пока обратное преобразование не предполагается. Делается это для импорта в программу, в которой, почему-то, не учтен этот нюанс (часовых поясов).
PS Как я понимаю правильным будет вычитание секунд (как вы и сказали) из результирующего unix-времени (для пояса +3 - 60*60*3). Так как это решит проблему пограничного времени суток.

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 10:10 10-09-2018
YuS_2



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

Цитата:
Чтобы остались только те файлы, которые в ggg были.

Опять не совсем понятно...
1. Как будем искать подкаталоги ggg? Это будет перечень каталогов или есть один корневой, в котором находятся эти:

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

?
2. Допустим находим каталог "A", в котором есть подкаталог "ggg".
а) Чистим весь каталог "A" (удаляем все файлы и подкаталоги), кроме подкаталога "ggg"?
б) Переносим все файлы и каталоги из подкаталога "ggg" в каталог "A", затем удаляем подкаталог "ggg"?
Так?
3. На powershell устроит решение? (сам код можно завернуть в батник, если что)
 
Taran2ul

Цитата:
Если это реализуемо (без излишнего усложнения) на bat, то "только".

реализуемо.
 

Цитата:
Делается это для импорта в программу, в которой, почему-то, не учтен этот нюанс (часовых поясов).

Это, собственно, и есть обратное преобразование...
Т.е. в программе исходное время, допустим, 9:00, выводится как 12:00, без учета часового пояса, правильно?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:02 10-09-2018 | Исправлено: YuS_2, 11:04 10-09-2018
Taran2ul



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

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

Да, все так.

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 11:56 10-09-2018
YuS_2



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

Цитата:
Да, все так.

Тогда, примерно так:

Код:
@echo off
setlocal enabledelayedexpansion
set "fld=test"
set "def=-0-"
set "suf=.crtemp"
set tz=10800
 
pushd "%fld%"
for /f "delims=" %%x in ('dir /a-d/b') do (
    for /f "tokens=2-4 delims=[]" %%a in ("%%x") do (
        for /f "tokens=1-6 delims=-_" %%k in ("%%a") do (
            call :unixtime %%k %%l %%m %%n %%o %%p var
            set /a var=var-tz
            echo ren "%%x" "!var!%def%%%b%%c%suf%"
        )
    )
)
popd
endlocal
pause&exit /b
 
:unixtime %yy% %mm% %dd% %hh% %nn% %ss% var
setlocal enableextensions
set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5&set ss=%6
if 1%yy% lss 200 if 1%yy% lss 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
if 1%hh% lss 20 set hh=0%hh%
set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
set /a j=j*86400+hh*3600+nn*60+ss
endlocal&set %7=%j%&exit/b

 
в боевом режиме, "echo" необходимо удалить перед командой "ren"
в переменной %fld% можно указать абсолютный или относительный путь...
наличие других файлов, не подходящих под формат, здесь не учтено... если потребуется, то для команды dir надо будет составить фильтр...
 
Добавлено:
xerpal

Цитата:
На один уровень выше. То есть в корни этих папок рандомных.


Цитата:
Чтобы остались только те файлы, которые в ggg были.

Вот, предварительное решение, более-менее универсальное:
powershell

Код:
$fld = 'test'
dir $fld -rec -inc 'ggg' -dir|%{
    dir (gi $_.fullname).parent.fullname -exc 'ggg'|%{del $_.fullname -rec -force -whatif}
    dir $_.fullname|%{move $_.fullname (gi $_.directoryname).parent.fullname -whatif}
    del $_.fullname -rec -force -whatif
}

в переменной $fld, можно указать корневой каталог для поиска, с абсолютным или относительным путем...
В боевом режиме, все параметры -whatif, следует удалить.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:08 10-09-2018 | Исправлено: YuS_2, 13:33 10-09-2018
Taran2ul



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

Цитата:
Тогда, примерно так


Код:
...
C:\132\bak\13212>set tz=10800
C:\132\bak\13212>pushd "test"
Непредвиденное появление: do.
C:\132\bak\13212\test>ааааfor /f "tokens=2-4 delims=[]" %a in ("%x") do (
...

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 15:02 10-09-2018
NIKZZZZ



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

Код:
for /f "delims=" %%x in ('dir /a-d/b [+*].mp3') do (  

 

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:20 10-09-2018
Taran2ul



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

Код:
C:\132\bak\13212\test>ааааfor /f "tokens=2-4 delims=[]" %a in ("%x") do (

А что за аааа?

Всего записей: 458 | Зарегистр. 18-02-2008 | Отправлено: 15:46 10-09-2018
YuS_2



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

Цитата:
А что за аааа?

Это только Вам ведомо
у меня там ничего подобного не было...
Сохраните сценарий в кодировке cp866

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 16:11 10-09-2018
NIKZZZZ



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Taran2ul
Не знаю, возможно, влезла какая-то гадость при копировании файла, для копирования лучше нажать в посте "редактировать", и скопировать нужное в клипбоард.
И посмотрите, нет ли у вас каталогов или файлов с таким именем, тогда можно будет сориентироваться.
Я проверил скрипт, вроде нормально работает.
Маску можно так-же поправить.

Код:
for /f "delims=" %%x in ('dir /a-d/b [+*]_*_[+*].mp3') do (


Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:13 10-09-2018 | Исправлено: NIKZZZZ, 16:21 10-09-2018
YuS_2



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

Цитата:
C:\132\bak\13212>set tz=10800  
C:\132\bak\13212>pushd "test"  
Непредвиденное появление: do.  
C:\132\bak\13212\test>ааааfor /f "tokens=2-4 delims=[]" %a in ("%x") do (

Кстати, а что это за лог такой интересный? Вы что, команды построчно в консоль вводите?
Весь сценарий необходимо сохранить в файле .bat или .cmd и только потом запускать. Это раз.
В строке:

Код:
set "fld=test"

необходимо указать Ваш каталог с путем, где расположены файлы, которые необходимо переименовать. Это два.
ну и фильтр файлов заодно добавьте, который предложил NIKZZZZ, в любом случае, не помешает. Это три.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 16:30 10-09-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 226 227 228 229 230

Компьютерный форум 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