Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Запрос для wmic

Ответить
Настройки темы
CMD/BAT - [решено] Запрос для wmic

Аватара для SANIOK_AV

Старожил


Сообщения: 493
Благодарности: 6

Профиль | Отправить PM | Цитировать


Доброго времени суток!
В батнике в зависимости от текущего времени (до 10 утра или после) выполняется или не выполняется определённый блок:
Код: Выделить весь код
wmic.exe path Win32_LocalTime where (Hour^<10) get Hour 2>nul|find.exe /i "Hour">nul && goto :Skip
echo privet
:Skip
Но я хотел бы чтоб этот блок выполнялся, к примеру, после 10 часов 45 минут.
Условие для данного примера я как бы себе представляю:
Код: Выделить весь код
(Hour<10 or (Hour=10 and Minute<45))
Но вот как правильно это записать для wmic.exe ?
Заранее благодарен!

Отправлено: 16:14, 15-09-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Так. Стало интереснее.

Возвращаемся к mshta:
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
    set sPrevCP=%%i
    chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
    `@"%systemroot%\system32\mshta.exe" "javascript:var enumItems = new Enumerator(GetObject('winmgmts:{impersonationLevel=impersonate}^!\\\\.\\root\\cimv2').ExecQuery('SELECT DeviceID FROM Win32_LogicalDisk WHERE DriveType = 3 AND MediaType = 12')); for(; ^!enumItems.atEnd(); enumItems.moveNext()) {try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(enumItems.item().DeviceID)} catch (e){}} close();" ^
    1^|more`
) do echo [%%i]

chcp %sPrevCP% >nul

endlocal
exit /b 0
Что теперь?
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:32, 26-03-2014 | #21



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

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


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Цитата Iska:
Что теперь? »
синтаксическая ошибка, строка 1 символ 206

Отправлено: 10:29, 26-03-2014 | #22


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Скриншот ошибки можно?

Отправлено: 10:45, 26-03-2014 | #23


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Iska, sov44, не поверите: убрал всё "лишнее", включая "^" перед "!", -- пакетные файлы сработали.


Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
    set sPrevCP=%%i
    chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (`mshta "javascript:var enumItems = new Enumerator(new ActiveXObject('WbemScripting.SWbemLocator').ConnectServer('.', 'root\\CIMV2').ExecQuery('SELECT DeviceID FROM Win32_LogicalDisk WHERE DriveType = 3 AND MediaType = 12')); for(; !enumItems.atEnd(); enumItems.moveNext()) {try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(enumItems.item().DeviceID)} catch (e){}} close();"`) do echo [%%i]

chcp %sPrevCP% >nul
pause>nul
endlocal
exit /b 0

Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
    set sPrevCP=%%i
    chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (`mshta "javascript:var enumItems = new Enumerator(GetObject('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2').ExecQuery('SELECT DeviceID FROM Win32_LogicalDisk WHERE DriveType = 3 AND MediaType = 12')); for(; !enumItems.atEnd(); enumItems.moveNext()) {try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(enumItems.item().DeviceID)} catch (e){}} close();"`) do echo [%%i]

chcp %sPrevCP% >nul
pause>nul
endlocal
exit /b 0

Последний раз редактировалось Georgio, 26-03-2014 в 11:14.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:00, 26-03-2014 | #24


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Georgio, а до этого — не работали?

Отправлено: 11:23, 26-03-2014 | #25


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Iska, не работали: те же самые ошибки, что и у sov44. А у меня не Windows XP, а Windows 7 Starter. Кстати, с подобной проблемой при использовании разбора вывода каких-то команд "mshta.exe" (каких -- не помню) я уже сталкивался.

Последний раз редактировалось Georgio, 26-03-2014 в 11:59.


Отправлено: 11:53, 26-03-2014 | #26


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Цитата Georgio:
Iska, sov44, не поверите: убрал всё "лишнее", включая "^" перед "!", -- пакетные файлы сработали. »
Подтверждаю, оба кода заработали. Второй код вроде быстрее работает.

Iska, для ликбеза поясните код.

Последний раз редактировалось sov44, 26-03-2014 в 12:04.


Отправлено: 11:54, 26-03-2014 | #27


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


sov44, а так:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions disabledelayedexpansion

for /f "tokens=2 delims=:" %%i in ('chcp') do (
	set sPrevCP=%%i
	chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
	`@"%systemroot%\system32\mshta.exe" "javascript:var enumItems = new Enumerator(new ActiveXObject('WbemScripting.SWbemLocator').ConnectServer('.', 'root\\CIMV2').ExecQuery('SELECT DeviceID FROM Win32_LogicalDisk WHERE DriveType = 3 AND MediaType = 12')); for(; ^!enumItems.atEnd(); enumItems.moveNext()) {try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(enumItems.item().DeviceID)} catch (e){}} close();" ^
	1^|more`
) do echo [%%i]

chcp %sPrevCP% >nul

endlocal
exit /b 0

?

Цитата sov44:
Второй код вроде быстрее работает. »
Поменяйте их местами — запущенный вторым также будет работать быстрее .


Цитата sov44:
Iska, для ликбеза поясните код. »
Лучше спросите, что непонятно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:14, 26-03-2014 | #28


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Цитата Iska:
sov44, а так: »
http://savepic.su/4258146.jpg

Отправлено: 19:06, 26-03-2014 | #29


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата sov44:
http://savepic.su/4258146.jpg »
. Тогда пользуйтесь предложенными выше вариантами коллеги Georgio.

Отправлено: 19:27, 26-03-2014 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Запрос для wmic

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как убрать запрос UAC для определённой программы NA-kun Microsoft Windows 7 19 28-10-2012 02:06
Ошибка - Неизвестное исключительное состояние WMIC ZlojMyX Microsoft Windows 2000/XP 4 19-06-2012 10:08
WMI - В батника при втором обращении к wmic, виснет?! akrav Скриптовые языки администрирования Windows 1 10-02-2011 16:50
WMIC. Добавление WinXP в домен Windows2003. posoh Microsoft Windows NT/2000/2003 1 23-11-2006 02:34
SQL-запрос для разных наборов данных kukushka Программирование и базы данных 3 14-12-2004 11:04




 
Переход