我正在尝试编写一个批处理脚本,该脚本获取(除其他外)计算机拥有的所有磁盘驱动器的列表。基本代码如下所示:
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
循环中的条件以排除最后一行,但它......很时髦并且从未起作用。我感谢任何/所有帮助。
我刚过来这个话题。我一直在使用 findstr /v 来排除空行:
FOR /f "usebackq skip=1 tokens=1 delims=:" %%a in (`WMIC logicaldisk WHERE "drivetype=3" GET deviceid ^| findstr /v /r "^$"`) do (
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)