Windows 7 如何使用wmic(cmd命令行)获取多个参数,包括空格?
我的驱动器C:的卷名是Windows 7 如何使用wmic(cmd命令行)获取多个参数,包括空格?,windows-7,cmd,escaping,wmic,Windows 7,Cmd,Escaping,Wmic,我的驱动器C:的卷名是300GB WD3000HLFS-0(包括“300GB”和“WD3000HLFS-0”之间的空格) C:的卷序列号为1234-ABCD (根据命令VOL) 我无法成功使用此代码: SET WMICcmd="WMIC logicaldisk WHERE VolumeSerialNumber='1234ABCD' get Caption^,VolumeName^,VolumeSerialNumber^" FOR /F "tokens=1,2,3 skip=1" %%d IN (
300GB WD3000HLFS-0
(包括“300GB”和“WD3000HLFS-0”之间的空格)C:的卷序列号为
1234-ABCD
(根据命令
VOL
)
我无法成功使用此代码:
SET WMICcmd="WMIC logicaldisk WHERE VolumeSerialNumber='1234ABCD' get Caption^,VolumeName^,VolumeSerialNumber^"
FOR /F "tokens=1,2,3 skip=1" %%d IN (' %WMICcmd% ') DO (
ECHO '%%d' is the Drive with the VolumeName '%%e' and VolumeSerialNumber '%%f'
SET ODrive=%%d
)
如何在WMIC的帮助下以及在Windows 7命令行批处理中使用特定的VolumeSerialNumber以及其他参数来获取此VolumeName?
您可以尝试使用CSV输出格式,一行中所有属性都用逗号分隔
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "skip=2 tokens=2-4 delims=," %%a in (
'WMIC logicaldisk WHERE VolumeSerialNumber^="1234ABCD" get Caption^,VolumeName^,VolumeSerialNumber /format:csv'
) do (
ECHO '%%a' is the Drive with the VolumeName '%%b' and VolumeSerialNumber '%%c'
)
但是,如果任何字段包含逗号,它将失败,因此,您可以使用列表格式。在这种情况下,wmic命令的输出是每个请求属性的一行,格式为property=value
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "tokens=1,* delims==" %%a in (
'WMIC logicaldisk WHERE VolumeSerialNumber^="1234ABCD" get Caption^,VolumeName^,VolumeSerialNumber /format:list'
) do (
if "%%a"=="Caption" ( set "caption=%%b"
) else if "%%a"=="VolumeName" ( set "volumeName=%%b"
) else if "%%a"=="VolumeSerialNumber" ( set "volumeSerialNumber=%%b"
)
)
ECHO '%caption%' is the Drive with the VolumeName '%volumeName%' and VolumeSerialNumber '%volumeSerialNumber%'
WMIC输出在每个输出行的末尾包含一个传统的回车符,该传统字符存储在指定的变量中。取决于你的代码,它可以干涉或不干涉。如有必要,要删除此传统字符,只需
for /f "delims=" %%a in ("%caption%") do set "caption=%%a"
这将为变量重新分配相同的值,但没有传统的CR