Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Devils
15 / 15 / 0
Регистрация: 05.02.2015
Сообщений: 140
1

Определить, является ли диск SSD-диском

26.08.2015, 11:48. Просмотров 1099. Ответов 16
Метки нет (Все метки)

Доброго времени суток.
Подскажите пожалуйста, как через cmd (возможно средствами wmic) можно определить SSD?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2015, 11:48
Ответы с готовыми решениями:

Samsung RC530, после апгрейда в виде установки вторым диском ssd , bios не видит ssd диск в режиме ACHI
Доброго времени суток! Имеется ноут Samsung RC530. Там по умолчанию один hdd. Решил поставить ssd...

Сбой в работе SSD диском
Есть диск SSD. По кристалдиску получилось следующее(см. скрин) Его выбросить или еще что то можно...

Windows 7 на ssd ssd диск samsung 850 evo
ошибка 0x80070057 при установке windows 7 на ssd ssd диск samsung 850 evo + ASUS M5A97 R2.0 ???

Неправильное выключение и перезагрузка ноутбука с SSD-диском
Доброго времени суток, Недавно прикупил для своего ноутбука SSD-диск (HDD поставил вместо...

Досадное недоразумение с SSD диском Vertex 3MI 120GB
Здарова, Ребя! Купил SSD Vertex 3MI 120GB подключил к материнке Asus P8Z77-V перед установкой винды...

16
alpap
2136 / 1442 / 483
Регистрация: 26.04.2015
Сообщений: 4,910
26.08.2015, 15:49 2
Devils, Гляньте [ссылка на сторонний форум].
0
Devils
15 / 15 / 0
Регистрация: 05.02.2015
Сообщений: 140
27.08.2015, 13:33  [ТС] 3
alpap, не совсем то, но можно отталкиваясь от этого решения сделать вот такой код
Windows Batch file
1
2
3
4
5
6
7
8
setlocal enabledelayedexpansion
set typeHDD=HDD
for /F "Tokens=2 Delims==" %%a In ('wmic diskdrive where "MediaType='Fixed Hard Disk Media'" get Size /format:list^') Do ( set HDDtemp=%%a && set HDD=!HDDtemp:~0,3! )
if %HDD%==32 set typeHDD=SSD
if %HDD%==64 set typeHDD=SSD
if %HDD%==128 set typeHDD=SSD
if %HDD%==256 set typeHDD=SSD
Echo %typeHDD%
0
alpap
2136 / 1442 / 483
Регистрация: 26.04.2015
Сообщений: 4,910
27.08.2015, 13:58 4
Devils, А, может еще проще
Windows Batch file
1
2
3
4
5
6
if %PROCESSOR_ARCHITECTURE%==x??? (
 что-то
) else (
 другое
)
exit
0
27.08.2015, 13:58
Devils
15 / 15 / 0
Регистрация: 05.02.2015
Сообщений: 140
27.08.2015, 14:18  [ТС] 5
alpap, а причем здесь архитектура процессора и определение SSD?
0
vavun
10209 / 5370 / 838
Регистрация: 07.04.2013
Сообщений: 15,529
27.08.2015, 14:21 6
Devils, с точки зрения ОС, по идее, не должно быть различий между SSD и HDD.
wmic про тип памяти устройства ни слова не говорит.
0
alpap
2136 / 1442 / 483
Регистрация: 26.04.2015
Сообщений: 4,910
27.08.2015, 14:25 7
Devils, Да не, имелось ввиду что сразу в for поставить задачу if ...==... , или Вам достаточно просто вывода информации, обычно что-то с ней делается.
0
Devils
15 / 15 / 0
Регистрация: 05.02.2015
Сообщений: 140
27.08.2015, 14:28  [ТС] 8
vavun, не скажи, не зря же вин8 сама определяет тип диска, иначе ссд быстрее "представится", чем это гарантирует производитель.
0
vavun
10209 / 5370 / 838
Регистрация: 07.04.2013
Сообщений: 15,529
27.08.2015, 14:31 9
Devils, могу ошибаться, но где то в блогах msdn читал, что тип носителя определяется по скорости рандомной записи или чтения. (звучит, как бред)

Нашел скрипт на autoit
https://www.autoitconsulting.com/sit...sing-a-script/
Быть может подойдет в качестве альтернативы, если не удастся справится стандартными средствами.

А вообще интересная тема, присоединюсь к вопросу.
0
Devils
15 / 15 / 0
Регистрация: 05.02.2015
Сообщений: 140
27.08.2015, 14:32  [ТС] 10
alpap, нет конечно. вывод информации - не конечная цель. В зависимости от значения переменной %typeHDD%, будут производиться дальнейшие действия.
0
vavun
10209 / 5370 / 838
Регистрация: 07.04.2013
Сообщений: 15,529
27.08.2015, 14:33 11
Немного соврал.
Yes. The automatic scheduling of defragmentation will exclude partitions on devices that declare themselves as SSDs. Additionally, if the system disk has random read performance characteristics above the threshold of 8 MB/sec, then it too will be excluded. The threshold was determined by internal analysis.
http://blogs.msdn.com/b/e7/archive/2...rives-and.aspx
0
alpap
2136 / 1442 / 483
Регистрация: 26.04.2015
Сообщений: 4,910
27.08.2015, 14:38 12
Devils, Вот так даст информацию HHD или нет:
Windows Batch file
1
wmic.exe LogicalDisk where "DriveType=2 and MediaType is null and not FileSystem is null" get Name, VolumeName, VolumeSerialNumber
0
vavun
10209 / 5370 / 838
Регистрация: 07.04.2013
Сообщений: 15,529
27.08.2015, 14:42 13
А я нашел костыльный необычный способ определения по оценке скорости чтения
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
winsat disk -seq -read | findstr "MB/s" >temp1
for /f "tokens=8 delims= " %%A IN (temp1) DO set score=%%A
del temp1
IF %score% gtr 6.9 (
set SSD=1
) else (
set SSD=0
)
echo %SSD%
1
Devils
15 / 15 / 0
Регистрация: 05.02.2015
Сообщений: 140
27.08.2015, 14:54  [ТС] 14
Цитата Сообщение от vavun Посмотреть сообщение
Devils, могу ошибаться, но где то в блогах msdn читал, что тип носителя определяется по скорости рандомной записи или чтения. (звучит, как бред)
Читали вы это здесь
А здесь говорится, а том, что порог может не совпадать.
Утилитка не работает. Никакую информацию не выводит.

Добавлено через 11 минут
alpap, не вариант. У меня в неттопе (с которого пишу) установлен SSD m-SATA. И тот код, который вы написали, не нашел его как SSD, зато флешку увидел
0
alpap
2136 / 1442 / 483
Регистрация: 26.04.2015
Сообщений: 4,910
27.08.2015, 15:58 15
Devils, А этот пробовали?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
 
for /f "tokens=4-5 delims=. " %%a in ('ver') do set os_ver=%%a.%%b
if %os_ver% GTR 6.1 (set i=SCSI
set x=0x40) else (set i=IDE
set x=0x0)
 
set SSD=0
set HDD=0
set SSD2=0
set HDD2=0
set SSD3=0
set HDD3=0
 
for /f "tokens=1-8 delims=\" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Enum\%i%" /s ^| find /i "Disk" 2^> nul') do (for /f "usebackq tokens=2*" %%i in (`reg query "%%a\%%b\%%c\%%d\%%e\%%f\%%g"^|Find /I "Capabilities"`) do if %%j==%x% (set HDD=1) else (set SSD=1))
 
if %os_ver% LSS 6.1 (if %SSD%==1 (echo SSD) else (echo HDD)
pause
exit)
 
for /f "tokens=1-8 delims=\" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Enum\%i%" /s ^| find /i "Disk" 2^> nul') do (for /f "usebackq tokens=2*" %%i in (`reg query "%%a\%%b\%%c\%%d\%%e\%%f\%%g"^|Find /I "ContainerID"`) do if %%j=={00000000-0000-0000-ffff-ffffffffffff} (set HDD2=1) else (set SSD2=1))
 
set /a SSD3=%SSD%+%SSD2%
if %SSD3%==2 (echo SSD) else (echo HDD)
pause
0
Dragokas
Эксперт WindowsАвтор FAQ
17073 / 7128 / 861
Регистрация: 25.12.2011
Сообщений: 10,933
Записей в блоге: 16
28.08.2015, 22:21 16
Windows Batch file
1
if %%j=={00000000-0000-0000-ffff-ffffffffffff} (set HDD2=1)
Глубоко не копался, что это. Посмотрел в реестр. У меня на Win7 для OCZ Agility 3 прописан именно этот ID. Так что не вариант.

Определить можно с высокой степенью вероятности, но только не батником:
Цитата Сообщение от tchau.dev
Yes, there is a high chance of determining whether a drive is an SSD. SSD typically support the TRIM command, so I would check to see if the drive supports the TRIM command.

In Windows, you can use IOCTL_STORAGE_QUERY_PROPERTY to get the DEVICE_TRIM_DESCRIPTOR structure which will tell you if TRIM is enabled.

If you really know what you're doing, you can get the raw IDENTIFY DEVICE package, and interpret the data yourself. For SATA drives it would be word 169 bit 0.
Добавлено через 10 минут
Вариант через smartctl с запуском от Админа.

Windows Batch file
1
smartctl -i c: |>NUL find /i "Solid State Device" && echo SSD|| echo not SSD
1
Devils
15 / 15 / 0
Регистрация: 05.02.2015
Сообщений: 140
14.12.2015, 14:08  [ТС] 17
Dragokas, вариант хорош, но не рабочий, если его запускать из под WINPE.
0
14.12.2015, 14:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2015, 14:08

Установка системы на SSD (С:), когда (С:) явл. другим диском
У меня три физических носителя: HDD 1TB, HDD 2TB и SSD 450GB. Назову их соответственно 1, 2 и 3....

Как в Delphi определить, является ли диск сетевым?
Здравствуйте. Хотела бы узнать, как в Delphi можно определить какие из подключенных дисков,...

Как подключить SSD если SATA 3 уже занят Жёстким диском?
Доброго времени суток! Собственно имеется материнская плата MSI B75IA-E33,в ней 1 разъём SATA 3 и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru