我想写一个批处理脚本,获取(除其他外)计算机所有磁盘驱动器的列表。基本代码看起来是这样的:为什么此批处理脚本中的FOR/f循环评估空行?
REM Build the list of disk drives to monitor
SETLOCAL enabledelayedexpansion
FOR /f "skip=1 tokens=1 delims=:" %%a in ('"WMIC logicaldisk WHERE drivetype=3 GET deviceid"') do (
SET "DISK_DATABASES=!DISK_DATABASES!%%a|"
SET "DRIVES_TO_MONITOR=!DRIVES_TO_MONITOR!%%a:\\|"
)
我相当明显地建立两个稍有不同的列表以供稍后使用。当我运行这一点,但是,输出我得到类似如下:
C|D|E||
C:\\|D:\\|E:\\|:\\|
现在,我希望尾随管在这两种情况下,我可以管理,但我真的很困惑,为什么有一个额外的在那里空白的条目。如果我手动运行wmic
命令,我可以看到输出结尾处确实有一个空行,但我的理解是/f
明确地应该忽略空行。
如果我打开ECHO
,它看起来像最后一行刚刚作为回车/换行符或类似的进来。有没有办法做我期待的事情?我错过了什么吗?我试图在循环中编写一个if
条件来排除最后一行,但它是......时髦而且从来没有工作过。我感谢任何/所有的帮助。
哇,我们的生活和学习,不是吗?我想知道为什么像WMIC这样的实用程序首先会在一行中生成一个''字符......或者这可能是@matt发现的结果。 –
我想这不是unicode问题,因为即使在XP中,微软也不知道自己的行结尾应该如何。 IPconfig(XP)也产生不一致的结局 – jeb
感谢jeb和matt的答案。两种解决方案都可以工作,但jeb's不需要我创建临时文件,所以我接受他的。 – Morinar