我对批处理脚本相对较新,特别是在Windows环境中。我希望能够通过以下命令收集有关特定机器的HDD信息:
wmic idecontroller
然而,当我运行该命令时,我收到的输出如下所示:
Availability Caption ConfigManagerErrorCode ConfigManagerUserConfig CreationClassName Description DeviceID ErrorCleared ErrorDescription InstallDate LastErrorCode Manufacturer MaxNumberControlled Name PNPDeviceID PowerManagementCapabilities PowerManagementSupported ProtocolSupported Status StatusInfo SystemCreationClassName SystemName TimeOfLastReset
ATA Channel 0 0 FALSE Win32_IDEController IDE Channel PCIIDE\IDECHANNEL\4&160FD31B&0&0 (Standard IDE ATA/ATAPI controllers) ATA Channel 0 PCIIDE\IDECHANNEL\4&160FD31B&0&0 37 OK Win32_ComputerSystem TEST
ATA Channel 3 0 FALSE Win32_IDEController IDE Channel PCIIDE\IDECHANNEL\4&160FD31B&0&3 (Standard IDE ATA/ATAPI controllers) ATA Channel 3 PCIIDE\IDECHANNEL\4&160FD31B&0&3 37 OK Win32_ComputerSystem TEST
ATA Channel 4 0 FALSE Win32_IDEController IDE Channel PCIIDE\IDECHANNEL\4&160FD31B&0&4 (Standard IDE ATA/ATAPI controllers) ATA Channel 4 PCIIDE\IDECHANNEL\4&160FD31B&0&4 37 OK Win32_ComputerSystem TEST
ATA Channel 5 0 FALSE Win32_IDEController IDE Channel PCIIDE\IDECHANNEL\4&160FD31B&0&5 (Standard IDE ATA/ATAPI controllers) ATA Channel 5 PCIIDE\IDECHANNEL\4&160FD31B&0&5 37 OK Win32_ComputerSystem TEST
Intel(R) 6 Series/C200 Series Chipset Family 6 Port SATA AHCI Controller - 1C03 0 FALSE Win32_IDEController Intel(R) 6 Series/C200 Series Chipset Family 6 Port SATA AHCI Controller - 1C03 PCI\VEN_8086&DEV_1C03&SUBSYS_04A31028&REV_04\3&11583659&0&FA Intel Intel(R) 6 Series/C200 Series Chipset Family 6 Port SATA AHCI Controller - 1C03 PCI\VEN_8086&DEV_1C03&SUBSYS_04A31028&REV_04\3&11583659&0&FA 37 OK Win32_ComputerSystem TEST
如果我只想从特定列收集信息,并将每个字符串存储到变量中,那么最好的方法是什么?例如,如果我想将“描述”下的所有字段存储到字符串数组中!
答案 0 :(得分:2)
你走了。批处理本身没有数组,但您可以像这样复制数组:
@echo off
setlocal enabledelayedexpansion
set cnt=0
for /f "tokens=2 delims==" %%a in ('wmic idecontroller get description /value^| Find "="') do (
set /a cnt+=1
set Ide[!cnt!]=%%a
)
for /L %%a in (1,1,%cnt%) do echo !Ide[%%a]!