Показать полную графическую версию : [решено] Запрос для wmic
Так. Стало интереснее.
Возвращаемся к 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
Что теперь?
Что теперь? » синтаксическая ошибка, строка 1 символ 206
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
Georgio, а до этого — не работали?
Iska, не работали: те же самые ошибки, что и у sov44. А у меня не Windows XP, а Windows 7 Starter. Кстати, с подобной проблемой при использовании разбора вывода каких-то команд "mshta.exe" (каких -- не помню) я уже сталкивался.
Iska, sov44, не поверите: убрал всё "лишнее", включая "^" перед "!", -- пакетные файлы сработали. »
Подтверждаю, оба кода заработали. Второй код вроде быстрее работает.
Iska, для ликбеза поясните код.
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, а так: »
http://savepic.su/4258146.jpg
http://savepic.su/4258146.jpg »
;). Тогда пользуйтесь предложенными выше вариантами коллеги Georgio.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.