无忧启动论坛

标题: ERRORLEVEL解惑 [打印本页]

作者: hdzz    时间: 2008-12-9 15:12
标题: ERRORLEVEL解惑
郁闷了一下午了
@echo off
for %%i in (a b c) do (
fsutil fsinfo drivetype %%i: | FINDSTR /I "固定驱动器"
echo %ERRORLEVEL%
IF NOT ERRORLEVEL 1 echo start
)
pause

IF NOT ERRORLEVEL 1的意思应当是ERRORLEVEL<1的情况,而从echo %ERRORLEVEL%中看到的ERRORLEVEL却都是0,而唯独只有for到c时才执行echo start?
同样都是0,怎么只执行c的呢?

更奇怪的是我把这个for拆开单独写:
@echo off
fsutil fsinfo drivetype b:|findstr/i "固定驱动器"
echo %errorlevel%
pause

errorlevel的值就是1,
像第一段用for就是0

谁能给小弟一个详解。
作者: lianjiang    时间: 2008-12-9 15:19
可到到联盟搜索一下“变量延迟”。
作者: hdzz    时间: 2008-12-9 15:23
Setlocal
我以前只是看过,没有用过。
这次赶紧试试
我对IF NOT ERRORLEVEL 1的理解对么?
作者: hdzz    时间: 2008-12-9 15:32
好像不是setlocal的问题。
只看第一段,a,b,c三次循环的errorlevel值都是0,怎么只只想c的?
作者: dos时代菜鸟    时间: 2014-7-18 11:29
  1. @echo off
  2. for /f "delims=" %%c in ('fsutil fsinfo drives') do (
  3. for %%i in (%%c) do (
  4.         for /f "tokens=3*" %%x in ('fsutil fsinfo drivetype %%i') do (
  5.                 if %%x*==固定驱动器* echo %%i
  6.         )
  7. )
  8. )
复制代码



作者: huang1987    时间: 2023-11-13 13:05
谢谢分享




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3