如何将wmic memorychip get SMBIOSMemoryType数值转换为名称(DDR)并输出到txt文件
how can I convert wmic memorychip get SMBIOSMemoryType numerical value to name (DDR) and output to a txt file
我目前正在编写脚本,将从 wmic 等收集的信息输出到 txt 文件或 html 文件。
我知道您可以使用命令`wmic memorychip get SMBIOSMemoryType 获取内存类型,即 DDR3、DDR4 等,它以数值显示类型,即 DDR4 为 26。
但是有没有可以编写批处理脚本来转换值以显示 DDR3/DDR4 等并将其输出到变量。
20 = DDR
21 = DDR2
22 = DDR2 FB-DIMM
24 = DDR3
26 = DDR4
我似乎无法在评论框中添加代码,所以我已将下面的代码更新为我发现的内容。
这在原则上似乎可行。
for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
if %FF% equ 26 (
goto ramtype1
)
if %FF% equ 24 (
goto ramtype2
)
if %FF% equ 21 (
goto ramtype3
) else (
goto ramtype4
)
:ramtype1
echo DDR4
pause
exit
:ramtype2
echo DDR3
pause
exit
:ramtype3
echo DDR2
pause
exit
:ramtype4
echo other
pause
exit
Pause
这段代码类似。
for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
if %FF% equ 26 (
echo Ram Type is DDR4.
if %FF% equ 24 (
echo Ram Type is DDR4.
)
) else (
echo Unknown
)
需要以上内容才能使用以下代码或类似代码。
if /i %opt%==1 echo !CODE HERE! >> "..\NCR_STAGING_LOGS\ASDA%STORENAME%%serial% %MAC%".html
可惜没怎么看
我通常会使用下面的方法来获取 wmic 信息并将其传递给 %variable%,例如下面的 %Memtype%,但这显然会输出 26 作为 DDR4。
set torun=wmic memorychip get SMBIOSMemoryType
for /f "tokens=2 delims==" %%a in ('%torun%') do set MemType=%%a
我有一个解决方案,看起来对吗?
此代码似乎有效并将我的 ram 输出为 DDr4
for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
if %FF% equ 26 (
echo Ram Type is DDR4.)>"myNewTextFile.txt"
if %FF% equ 24 (
echo Ram Type is DDR3.)>"myNewTextFile.txt"
if %FF% equ 21 (
echo Ram Type is DDR2.)>"myNewTextFile.txt"
)
)
) else (
echo Unknown
)>"myNewTextFile.txt"
[编辑/]
(
If %FF% Equ 26 (
Echo Ram Type is DDR4.
) Else If %FF% Equ 24 (
Echo Ram Type is DDR3.
) Else If %FF% Equ 21 (
Echo Ram Type is DDR2.
) Else Echo Unknown
) 1>"myNewTextFile.txt"
试过上面的单行代码
但即使它有效,它也会破坏下面的其余代码。
这就是我正在使用的。
if /i %opt%==1 for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
(
If %FF% Equ 26 (
Echo Ram Type is DDR4.
) Else If %FF% Equ 24 (
Echo Ram Type is DDR3.
) Else If %FF% Equ 21 (
Echo Ram Type is DDR2.
) Else Echo Unknown
) 1>"myNewTextFile.txt"
在我的批处理文件中,我有一个菜单系统使用
if /i %opt%==1
至 if /i %opt%==10
当我从菜单中 select 选项二时上面的代码中断。
[Edit2 /]
If "%opt:"=%" == "1" (
For /F "Skip=1" %%E In (
'WMIC MemoryChip Get SMBIOSMemoryType'
) Do For /F %%F In (
"%%E"
) Do Set "FF=%%F"
(
If %FF% Equ 26 (
Echo Ram Type is DDR4.
) Else If %FF% Equ 24 (
Echo Ram Type is DDR3.
) Else If %FF% Equ 21 (
Echo Ram Type is DDR2.
) Else Echo Unknown
) 1>"myNewTextFile.txt"
)
这是在 batch-file 中使用的单行示例,它使用您指定的 SMBIOSMemoryType
属性、(仅在 Windows 10/服务器 2016+).
(For %%G In ("1=DDR" "2=DDR2" "4=DDR3" "6=DDR4") Do Set "_2%%~G") & For /F EOL^=S %%H In ('%SystemRoot%\System32\wbem\WMIC.exe MemoryChip Where "SMBIOSMemoryType='20' Or SMBIOSMemoryType='21' Or SMBIOSMemoryType='24' Or SMBIOSMemoryType='26'" Get SMBIOSMemoryType 2^>NUL') Do For %%I In (%%H) Do For /F %%J ('%SystemRoot%\System32\cmd.exe /V /D /C "Echo(!_%%I!") Do Echo(%%J
另请注意,您的初始 wmic 查询将输出与安装的记忆棒数量相同的结果。如果您不希望这样,则必须根据需要自行修改代码,因为这样做超出了将 uint32 数据类型结果替换为各自字符串的请求范围。
我目前正在编写脚本,将从 wmic 等收集的信息输出到 txt 文件或 html 文件。
我知道您可以使用命令`wmic memorychip get SMBIOSMemoryType 获取内存类型,即 DDR3、DDR4 等,它以数值显示类型,即 DDR4 为 26。
但是有没有可以编写批处理脚本来转换值以显示 DDR3/DDR4 等并将其输出到变量。
20 = DDR
21 = DDR2
22 = DDR2 FB-DIMM
24 = DDR3
26 = DDR4
我似乎无法在评论框中添加代码,所以我已将下面的代码更新为我发现的内容。
这在原则上似乎可行。
for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
if %FF% equ 26 (
goto ramtype1
)
if %FF% equ 24 (
goto ramtype2
)
if %FF% equ 21 (
goto ramtype3
) else (
goto ramtype4
)
:ramtype1
echo DDR4
pause
exit
:ramtype2
echo DDR3
pause
exit
:ramtype3
echo DDR2
pause
exit
:ramtype4
echo other
pause
exit
Pause
这段代码类似。
for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
if %FF% equ 26 (
echo Ram Type is DDR4.
if %FF% equ 24 (
echo Ram Type is DDR4.
)
) else (
echo Unknown
)
需要以上内容才能使用以下代码或类似代码。
if /i %opt%==1 echo !CODE HERE! >> "..\NCR_STAGING_LOGS\ASDA%STORENAME%%serial% %MAC%".html
可惜没怎么看
我通常会使用下面的方法来获取 wmic 信息并将其传递给 %variable%,例如下面的 %Memtype%,但这显然会输出 26 作为 DDR4。
set torun=wmic memorychip get SMBIOSMemoryType
for /f "tokens=2 delims==" %%a in ('%torun%') do set MemType=%%a
我有一个解决方案,看起来对吗?
此代码似乎有效并将我的 ram 输出为 DDr4
for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
if %FF% equ 26 (
echo Ram Type is DDR4.)>"myNewTextFile.txt"
if %FF% equ 24 (
echo Ram Type is DDR3.)>"myNewTextFile.txt"
if %FF% equ 21 (
echo Ram Type is DDR2.)>"myNewTextFile.txt"
)
)
) else (
echo Unknown
)>"myNewTextFile.txt"
[编辑/]
(
If %FF% Equ 26 (
Echo Ram Type is DDR4.
) Else If %FF% Equ 24 (
Echo Ram Type is DDR3.
) Else If %FF% Equ 21 (
Echo Ram Type is DDR2.
) Else Echo Unknown
) 1>"myNewTextFile.txt"
试过上面的单行代码 但即使它有效,它也会破坏下面的其余代码。
这就是我正在使用的。
if /i %opt%==1 for /F "skip=1" %%E in ('
wmic memorychip get SMBIOSMemoryType
') do for /F %%F in ("%%E") do set "FF=%%F"
(
If %FF% Equ 26 (
Echo Ram Type is DDR4.
) Else If %FF% Equ 24 (
Echo Ram Type is DDR3.
) Else If %FF% Equ 21 (
Echo Ram Type is DDR2.
) Else Echo Unknown
) 1>"myNewTextFile.txt"
在我的批处理文件中,我有一个菜单系统使用
if /i %opt%==1
至 if /i %opt%==10
当我从菜单中 select 选项二时上面的代码中断。
[Edit2 /]
If "%opt:"=%" == "1" (
For /F "Skip=1" %%E In (
'WMIC MemoryChip Get SMBIOSMemoryType'
) Do For /F %%F In (
"%%E"
) Do Set "FF=%%F"
(
If %FF% Equ 26 (
Echo Ram Type is DDR4.
) Else If %FF% Equ 24 (
Echo Ram Type is DDR3.
) Else If %FF% Equ 21 (
Echo Ram Type is DDR2.
) Else Echo Unknown
) 1>"myNewTextFile.txt"
)
这是在 batch-file 中使用的单行示例,它使用您指定的 SMBIOSMemoryType
属性、(仅在 Windows 10/服务器 2016+).
(For %%G In ("1=DDR" "2=DDR2" "4=DDR3" "6=DDR4") Do Set "_2%%~G") & For /F EOL^=S %%H In ('%SystemRoot%\System32\wbem\WMIC.exe MemoryChip Where "SMBIOSMemoryType='20' Or SMBIOSMemoryType='21' Or SMBIOSMemoryType='24' Or SMBIOSMemoryType='26'" Get SMBIOSMemoryType 2^>NUL') Do For %%I In (%%H) Do For /F %%J ('%SystemRoot%\System32\cmd.exe /V /D /C "Echo(!_%%I!") Do Echo(%%J
另请注意,您的初始 wmic 查询将输出与安装的记忆棒数量相同的结果。如果您不希望这样,则必须根据需要自行修改代码,因为这样做超出了将 uint32 数据类型结果替换为各自字符串的请求范围。