无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4315|回复: 5
打印 上一主题 下一主题

ERRORLEVEL解惑

  [复制链接]
跳转到指定楼层
1#
发表于 2008-12-9 15:12:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
郁闷了一下午了
@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

谁能给小弟一个详解。
推荐
 楼主| 发表于 2008-12-9 15:32:36 | 只看该作者
好像不是setlocal的问题。
只看第一段,a,b,c三次循环的errorlevel值都是0,怎么只只想c的?
回复

使用道具 举报

推荐
 楼主| 发表于 2008-12-9 15:23:46 | 只看该作者
Setlocal
我以前只是看过,没有用过。
这次赶紧试试
我对IF NOT ERRORLEVEL 1的理解对么?
回复

使用道具 举报

推荐
发表于 2008-12-9 15:19:57 | 只看该作者
可到到联盟搜索一下“变量延迟”。
回复

使用道具 举报

推荐
发表于 2014-7-18 11:29:33 | 只看该作者
  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. )
复制代码


回复

使用道具 举报

6#
发表于 2023-11-13 13:05:16 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-23 09:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表