0

我正在尝试将批处理文件放在一起以在系统上的每个逻辑驱动器上运行程序,但光驱除外。它可以很好地过滤掉光驱,但由于某种原因,我正在测试的构建命令的回声运行了额外的时间,除了变量没有值。这就像循环在空值上迭代额外的时间。想法?

(IF NOT !drive! == %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
        )
    )
)
4

1 回答 1

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行(即,正则表达式是“行首后跟行尾”)。

于 2013-05-06T20:02:21.840 回答