我如何知道磁盘是否为 SSD?

How I can know if the disk is a SSD?

我需要创建一个 T 卷,T 已创建,但如果磁盘是 ssd,我还需要一个新的 U 卷,我该怎么做? 判断我是不是 SSD 的批处理命令是什么?

[...]
set /a VOL_SIZE= %MINSIZE_MB% /2
set VOL_TYPE=simple
if %NDISK% GTR 1 set VOL_TYPE=stripe

echo create volume %VOL_TYPE% size=%VOL_SIZE% disk=%DISKLIST%   >>%CMD_FILE%
echo Format fs=NTFS quick                                       >>%CMD_FILE%
echo assign letter=T                                            >>%CMD_FILE%


::if I'm not a SSD goto :noSSD

echo create volume %VOL_TYPE% disk=%DISKLIST%                   >>%CMD_FILE%
echo Format fs=NTFS quick                                       >>%CMD_FILE%
echo assign letter=U                                            >>%CMD_FILE%

:noSSD
[...]

此致。

在 cmd 中,您可以键入以下命令来调用 PowerShell 并向其传递命令,如果磁盘属于该类型,该命令将 return “SSD”:

powershell.exe "(get-physicaldisk).MediaType"

根据 phuclv 的建议,在批处理文件中使用此命令的 return 值的最简单方法是:

powershell.exe "exit ((get-physicaldisk).MediaType) -ne 'SSD'" && echo SSD

语句解释,有SSD时:

  • ((get-physicaldisk).MediaType) - 计算结果为 'SSD'
  • 'SSD' -ne SSD' - 计算结果为 False(-ne 是 not-equal 运算符)
  • exit with logical false (False) - 使 PowerShell 退出而不将 CMD 的 %ERRORLEVEL% 设置为 non-zero
  • && - 是在第一个命令成功时执行第二个命令的 CMD 运算符(当 %ERRORLEVEL% 为零时)

作为使用 , you could also try via 的替代方法。

打开命令提示符 window,粘贴以下行,然后按 ENTER

For /F Tokens^=6Delims^=^" %G In ('^""%SystemRoot%\System32\wbem\WMIC.exe" /NameSpace:\root\Microsoft\Windows\Storage Path MSFT_PhysicalDisk Where "MediaType='4' And SpindleSpeed='0'" Get Model /Format:MOF 2^>NUL^"')Do @Echo %G is an SSD

这会访问与 PowerShell 的 Get-PhysicalDisk 相同的信息。它首先检查 MediaType 属性。 属性、0 (未指定) 有三个可能的值 return; 3 (硬盘);和 4 (SSD)。为了额外的安全,我检查主轴速度为 0,因为 SSD 中没有移动部件,并且 return 任何通过两项检查的型号名称。