我正在尝试将批处理文件放在一起,以便在除光驱之外的系统上的每个逻辑驱动器上运行程序。它过滤掉了光驱,但出于某种原因,我测试的构建命令的回声运行了一个额外的时间,除了变量没有值。这就像循环在空值上迭代额外的时间。想法?
(IF NOT!驱动!==%safe%只是确保我不运行脚本所在驱动器的命令,“safe”只是一个缩写)
for /F "usebackq skip=1 tokens=1,2" %%a IN (`wmic logicaldisk get DeviceID^,DriveType`) do (
SET drive=%%a
SET driveType=%%b
IF NOT !drive! == %safe% (
IF NOT !driveType! == 5 (
ECHO test commands
)
)
)
答案 0 :(得分:1)
wmic
在结果报告的末尾添加一个回车符。尝试这样的事情:
for /f "skip=1 tokens=1,2" %%a IN ('wmic logicaldisk get DeviceID^,DriveType ^| findstr /v /r /c:"^$"') do (
SET drive=%%a
SET driveType=%%b
IF NOT !drive! == %safe% (
IF NOT !driveType! == 5 (
ECHO test commands
)
)
)
注意:由于您的命令不包含转发标记,因此不需要usebackq
。 findstr
只搜索一个空行(即正则表达式是“行首,后跟行尾”)。