Показать полную графическую версию : [решено] Определение типа системного диска, SSD или HDD
Добрый вечер!
Появилась задачка для авто установки Windows.
Нужно определить тип системного диска, SSD или HDD, для применения соответствующих настроек.
Как это можно сделать из бат файла (SetupComplete.cmd)?
Устроит вариант и с дополнительным скриптом или утилитой.
Bruce Wayne
28-09-2013, 17:53
Если кому-нибудь когда-то пригодится, то вот, что у меня получилось:
@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
Правда, этот скрипт выдаст SSD, если в системе есть хотя бы один такой тип носителя, и HDD - если SSD отсутствует совсем.
Bruce Wayne, я делал так http://www.outsidethebox.ms/14817/#_Toc351312873
Bruce Wayne
03-10-2013, 15:13
Vadikan, я думал над этим, но единственный минус приведённого Вами способа в том, что не обязательно порог скорости совпадёт даже сейчас, не говоря уже о будущем, когда выйдут более быстрые носители. Но спасибо :)
но единственный минус приведённого Вами способа в том, что не обязательно порог скорости совпадёт даже сейчас, не говоря уже о будущем, когда выйдут более быстрые носители. »
Минус моего способа вовсе не в этом. Навскидку, их два:
1. winsat может не отработать из-за проблем с планами электропитания. Но даже это можно обойти:
Экспортировать существующие.
Вернуть стандартные (powercfg -restoredefaultschemes)
Выполнить оценку.
Импортировать экспортированные.
2. Не учитывается RAID.
Что же касается порога скорости, то я (не говоря уж о Microsoft) не вижу причин, по которым HDD должны превысить 8мб/с в скорости случайного чтения. Даже если такое произойдет, поднимите порог до 25 :) Пруфы http://www.outsidethebox.ms/14845/#_Toc351637941
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC