CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Аватара пользователя
Pozia

CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение Pozia »

Есть вот такой скрипт применения темы в Seven:





Код:

Код: Выделить всё

rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:"%SystemRoot%\Resources\themes\Aero.theme"
ping -n 10 127.0.0.1 > NUL
taskkill /im explorer.exe /F
start explorer.exe

Мне здесь не нравится строка

Код:

Код: Выделить всё

ping -n 10 127.0.0.1 > NUL

но без нее нельзя, так как не успевает примениться тема. Пробовал сделать так:





Код:

Код: Выделить всё

start /wait rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:"%SystemRoot%\Resources\themes\Aero.theme"
taskkill /im explorer.exe /F
start explorer.exe

но не работает. Может как не правильно оформил? Помогите пожалуйста.
Аватара пользователя
NiOl

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение NiOl »

Может во время запуска исходного батника посмотреть какой процесс появляется на доли секунд. Его исчезновение и надо отслеживать по "TaskList"

(т.е. "неграмотность" исходного скрипта заключается в том, что нет точной инфы, сколько времени требуется панели инструментов на применение темы - от долей секунд - до нескольких секунд - такое тоже может случиться)
Аватара пользователя
Bodya.N

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение Bodya.N »

Цитата NiOl:



Может во время запуска исходного батника посмотреть какой процесс появляется на доли секунд.
CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven




хорошая идея. там возникает несколько лишних процессов. Но как их уловить? Не успеваю. Подскажите подробнее пожалуйста.


Цитата NiOl:



Его исчезновение и надо отслеживать по "TaskList"
CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven




это как?


Цитата NiOl:



от долей секунд - до нескольких секунд - такое тоже может случиться)
CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven




ага, и зависит это от мощности компа. Вот это мне и не нравится
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение Iska »

1. Делаем "сканер", запускаем в отдельном CMD, желательно назначив ему высокий приоритет



@echo off

:Loop

echo === %time%>>%~dpn0.log

TaskList >>%~dpn0.log

goto :Loop




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

По нормальному завершению исходного, работающего скрипта смены темы останавливаем "сканер" (Ctrl+Break).



2. Анализируем лог-файл, возможно кроме Control.exe будет еще что-то. Ищем их отличительные особенности (лучше, если это уникальное имя файла). Если наблюдаются совпадения с уже имеющимися в памяти, то увеличиваем кол-во инфы в сканере "TaskList /V" - дополнительная инфа может быть (в конечном скрипте) отсяна по фильтру, например на совпадение названия "окна": TaskList /FI "WindowTitle eq Название окна"...



3. В итоге строки ожидания вместо пинга будет выглядить так:

:Loop

for /f "tokens=1" %%F in ('tasklist^|find /c "Control.exe"') do if not "%%F"=="0" GotTo :Loop


* здесь для прмера ожидается окончание выполнения файла "Control.exe" - его кол-во в оперативке должно стать равным нулю.
Аватара пользователя
Pozia

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение Pozia »

Цитата Pozia:



там возникает несколько лишних процессов. Но как их уловить? Не успеваю. Подскажите подробнее пожалуйста.
CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven




Process Monitor от бывшей Sysinternals. Установить фильтр на запуск и останов процессов.
Аватара пользователя
NiOl

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение NiOl »

1. Делаем "сканер", запускаем в отдельном CMD, желательно назначив ему высокий приоритет



@echo off

:Loop

echo === %time%>>%~dpn0.log

TaskList >>%~dpn0.log

goto :Loop




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

По нормальному завершению исходного, работающего скрипта смены темы останавливаем "сканер" (Ctrl+Break).



2. Анализируем лог-файл, возможно кроме Control.exe будет еще что-то. Ищем их отличительные особенности (лучше, если это уникальное имя файла). Если наблюдаются совпадения с уже имеющимися в памяти, то увеличиваем кол-во инфы в сканере "TaskList /V" - дополнительная инфа может быть (в конечном скрипте) отсяна по фильтру, например на совпадение названия "окна": TaskList /FI "WindowTitle eq Название окна"...



3. В итоге строки ожидания вместо пинга будет выглядить так:

:Loop

for /f "tokens=1" %%F in ('tasklist^|find /c "Control.exe"') do if not "%%F"=="0" GotTo :Loop


* здесь для прмера ожидается окончание выполнения файла "Control.exe" - его кол-во в оперативке должно стать равным нулю.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение Iska »

2seriych: зя Изображение!. Но, если посмотреть в реестр, то пройдя по пути «HKCR\.theme\(Default)» --> «HKCR\themefile\shell\open\command\(Default)» — придём в аккурат к указанному в первом посте темы:



Код:

Код: Выделить всё

%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:"%1"
Аватара пользователя
seriych

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение seriych »

А разве тему нельзя применить просто так:



Код:

Код: Выделить всё

Start /wait "" "%SystemRoot%\Resources\themes\Aero.theme"
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Помогите грамотно записать батник применение темы в Seven

Сообщение Iska »

2seriych: зя Изображение!. Но, если посмотреть в реестр, то пройдя по пути «HKCR\.theme\(Default)» --> «HKCR\themefile\shell\open\command\(Default)» — придём в аккурат к указанному в первом посте темы:



Код:

Код: Выделить всё

%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:"%1"
Ответить

Вернуться в «Скриптовые языки администрирования Windows»