Показать полную графическую версию : [решено] Запрос для wmic
SANIOK_AV
15-09-2011, 16:14
Доброго времени суток!
В батнике в зависимости от текущего времени (до 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 ? :idontnow:
Заранее благодарен!
Foreigner
15-09-2011, 16:39
SANIOK_AV,
чтоб этот блок выполнялся, к примеру, после 10 часов 45 минут.
Будет выполняться после 10:45
... where (hour=10 and minute^>45 or hour^>=11) get ....
SANIOK_AV
16-09-2011, 13:33
Foreigner, Спасибо большое, работает!
P.S.: как вариант можно ещё так: set /a t = %time::=%
if %t% leq 104500 goto :Skip
echo privet
:Skip
Подскажите, как с помощью wmic определить буквы логических дисков, не выводя буквы дисков, занятых флеш накопителями?
sov44, определить непосредственно USB Flash — вряд ли. А так — пробуйте:
wmic.exe LogicalDisk where "DriveType = 3 AND MediaType=12" get DeviceID
Win32_LogicalDisk class (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394173(v=vs.85).aspx)
Iska, код подошел. Необходимо вывести в переменную буквы дисков. У меня не получается @echo off
SetLocal enabledelayedexpansion
For /F %%A In (wmic.exe LogicalDisk where "DriveType = 3 AND MediaType=12" get DeviceID) Do (
set dr=%%A
echo !dr!
)
pause
Например, так:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq skip=1" %%i in (`wmic.exe LogicalDisk where "DriveType = 3 AND MediaType=12" get DeviceID`) do (
set sDriveName=%%i
echo [!sDriveName!]
)
endlocal
exit /b 0
Пробую с помощью WMIC определить наличие вставленной флешки, не получается
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq skip=1" %%i in (`wmic.exe LogicalDisk where "DriveType=2 And MediaType=NULL" get VolumeName`) do (
findstr.exe /r /c:"^Отсутствуют экземпляры класса.&" >nul &&(echo флешка не вставлена) || (set sDriveName=%%i& echo !sDriveName!)
)
pause
endlocal
exit /b
п.с. можно ли сделать подобное без wmic? (прав администратора может не быть)
Foreigner
07-08-2012, 22:44
Пробую с помощью WMIC определить наличие вставленной флешки, не получается »
А зачем MediaType?
@echo off
setlocal
set "wmic=2>nul wmic logicaldisk where drivetype=2 get volumename /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"
if not defined volumename (echo usb-flash is not inserted) else (echo label is %volumename%)
А зачем MediaType? » Прочитал тут (http://forum.oszone.net/post-1559706-9.html)
Foreigner, если флешка не вставлена, пишет "echo label is "
Foreigner
07-08-2012, 23:30
sov44, а ты просто введи команды:
wmic logicaldisk where drivetype=2 get * /value
и
set volumename
Что напишет?
Что напишет? »
Access=
Availability=
BlockSize=
Caption=A:
Compressed=
ConfigManagerErrorCode=
ConfigManagerUserConfig=
CreationClassName=Win32_LogicalDisk
Description=Дисковод 3,5 дюйма
DeviceID=A:
DriveType=2
ErrorCleared=
ErrorDescription=
ErrorMethodology=
FileSystem=
FreeSpace=
InstallDate=
LastErrorCode=
MaximumComponentLength=
MediaType=5
Name=A:
NumberOfBlocks=
PNPDeviceID=
PowerManagementCapabilities=
PowerManagementSupported=
ProviderName=
Purpose=
QuotasDisabled=
QuotasIncomplete=
QuotasRebuilding=
Size=
Status=
StatusInfo=
SupportsDiskQuotas=
SupportsFileBasedCompression=
SystemCreationClassName=Win32_ComputerSystem
SystemName=1-7BC79D2011CC4
VolumeDirty=
VolumeName=
VolumeSerialNumber=
переменная среды volumename не определена
что я должен увидеть?
Foreigner
08-08-2012, 00:01
Значит drivetype 2 не подойдет, т.к. он еще прихватывает дисковод
Попробуй изменить запрос на:
set "wmic=2>nul wmic logicaldisk where (drivetype=2 and caption!="A:") get volumename /value"
Подскажите, как вывести список разделов жёстких дисков локального компьютера? Сетевые диски не выводить.
Petya V4sechkin
25-03-2014, 17:41
как вывести список разделов жёстких дисков локального компьютера?
Ответ был дан в сообщении 5 (и вы даже отметили его полезным в 2012 году).
Спасибо! Заблудился в трёх соснах :) А как вывести список разделов жёстких дисков без сетевых, если в системе нет wmic?
Использовать WSH/PoSH. Если хотите остаться в рамках а) одного и б) пакетного файла — можно попробовать использовать командную строку в «mshta.exe»:
@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(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, на xp код не сработал. http://savepic.su/4249951.jpg
Iska, на xp код не сработал. »
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.
E:\Песочница\0369>0008.cmd
[C:]
[D:]
[E:]
[F:]
[H:]
[N:]
E:\Песочница\0369>
Ощущение такое, что там WMI вообще вырезан. Такой скрипт VBScript:
Option Explicit
Dim objSWbemServicesEx
Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
WScript.Echo TypeName(objSWbemServicesEx)
WScript.Quit 0
исполняется?
Такой скрипт vbscript..исполняется? http://savepic.su/4246864.jpg
На другой машине с ХР аналогичная ошибка при запуске батника. Может не по феншую запускаю? :dont-know Iska, если не затруднит, выложите батник.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.