Войти

Показать полную графическую версию : [решено] Запрос для wmic


Страниц : 1 [2]

Iska
26-03-2014, 09:32
Так. Стало интереснее.

Возвращаемся к 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('SEL ECT 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
26-03-2014, 10:29
Что теперь? » синтаксическая ошибка, строка 1 символ 206

Iska
26-03-2014, 10:45
Скриншот ошибки можно?

Georgio
26-03-2014, 11:00
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('SELE CT 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

Iska
26-03-2014, 11:23
Georgio, а до этого — не работали?

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

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

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

Iska
26-03-2014, 17:14
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
?

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

Iska, для ликбеза поясните код. »
Лучше спросите, что непонятно.

sov44
26-03-2014, 19:06
sov44, а так: »
http://savepic.su/4258146.jpg

Iska
26-03-2014, 19:27
http://savepic.su/4258146.jpg »
;). Тогда пользуйтесь предложенными выше вариантами коллеги Georgio.




© OSzone.net 2001-2012