我試圖循環遍歷系統中的所有dimms,並將它們寫入文本文件。我知道我可以使用WMIC的/Append
或CMD的重定向(>>
),但可以附加輸出Unicode和批處理文件重定向輸出的其他部分,即ANSI。另外,兩種標準方法都會輸出大量的空白行。在FOR循環中對每個項目執行的批處理文件
echo off
setlocal EnableDelayedExpansion
set _invpath="c:\temp\%COMPUTERNAME%-Inventory.txt"
for /f "tokens=2 delims==" %%f in ('wmic memorychip get devicelocator /value') do (
if [!f] NEQ [] (
set "MemoryDeviceLocator=%%f"
set _prefix=%MemoryDeviceLocator:~0,4%
if [%_prefix%]==[DIMM] (
for /f "usebackq tokens=2 delims==" %%g in (`wmic memorychip where 'devicelocator^="%MemoryDeviceLocator%"' get capacity /value ^| find "="`) do set "Capacity=%%g"
for /f "usebackq tokens=2 delims==" %%h in (`wmic memorychip where 'devicelocator^="%MemoryDeviceLocator%"' get serialnumber /value ^| find "="`) do set "SerialNumber=%%h"
for /f "usebackq tokens=2 delims==" %%i in (`wmic memorychip where 'devicelocator^="%MemoryDeviceLocator%"' get speed /value ^| find "="`) do set "Speed=%%i"
echo %MemoryDeviceLocator%=%MemoryDeviceLocator% >> %_invpath%
echo %MemoryDeviceLocator%Capacity=%Capacity% >> %_invpath%
echo %MemoryDeviceLocator%SerialNumber=%SerialNumber% >> %_invpath%
echo %MemoryDeviceLocator%Speed=%Speed% >> %_invpath%
)
)
)
這按照我想要的方式格式化輸出,但只顯示最後一個DIMM,而不是每個DIMM。例如:
DIMM2=DIMM2
DIMM2Capacity=4294967296
DIMM2SerialNumber=9169FG56
DIMM2Speed=1333
DIMM2=DIMM2
DIMM2Capacity=4294967296
DIMM2SerialNumber=9169FG56
DIMM2Speed=1333
如何修改批處理以輸出DIMM1的信息?
編輯,以顯示我的enabledelayedexpansion線
您需要[延期擴展](http://ss64.com/nt/delayedexpansion.html)... – aschipfl