标题: [文本处理] 批处理获取可用盘符时判断errorlevel并屏蔽多余信息 [打印本页]
作者: very_99 时间: 2009-5-24 03:00 标题: 批处理获取可用盘符时判断errorlevel并屏蔽多余信息
有个需求,判断是否存在这个盘符的
- @echo off
- mountvol o: /L |find /I "volume"
- if %errorlevel% EQU 1 echo no disk
- if %errorlevel% EQU 0 echo yes
复制代码
当我想判断多个盘符的时候,我用for做
- @echo off
- set list=o p q r s t e
- for %%i in (%list%) do (
- mountvol %%i: /L |find /I "volume"
- if %errorlevel% EQU 1 echo no disk
- if %errorlevel% EQU 0 echo yes
- pause
- )
复制代码
这里发现errorlevel好像变成整个for的这行输出了
那么我又想到这样做
- @echo off
- set list=o p q r s t e
- for %%i in (%list%) do (
- set disk=%%i:
- call :xx
- pause
- )
-
- :xx
- rem echo %disk%
- mountvol %disk% /L |find /I "volume"
- rem echo %disk% %errorlevel%
- if %errorlevel% EQU 1 echo %disk% no disk
- if %errorlevel% EQU 0 echo yes
复制代码
这里是成功了。 但是......如何在for里面直接做呢?能否取得每个循环的errorlevel呢?
ok 我看看文章,又写了下面的
- @echo off
- setlocal EnableDelayedExpansion
- set list=o p q r s t e
- for %%i in (%list%) do (
- mountvol %%i: /L |find /I "volume"
- if !errorlevel! EQU 1 echo no disk
- if !errorlevel! EQU 0 echo yes
- pause
- )
复制代码
看来可以了。不过,只有e盘是存在的,所以mountvol e: /L |find /I "volume" 的errorlevel是0,但是它也顺便把匹配值给输出了,这个能屏蔽吗?
不好意思
> nul 可以屏蔽输出 和unix的 > /dev/null类似。 我一直写shell的,刚写bat2天
另外问一下,各位有什么优化修改我的批处理的建议呀。谢谢啊
[ 本帖最后由 very_99 于 2009-5-24 05:26 编辑 ]
作者: Batcher 时间: 2009-5-24 03:08
建议使用if...else...
[ 本帖最后由 Batcher 于 2009-5-31 21:14 编辑 ]
作者: shqf 时间: 2009-5-31 20:36
- @echo off
- setlocal EnableDelayedExpansion
- set "list=a b c d e f g h i j k l m n o p q r s t u v w x y z"
- for %%i in (%list%) do (
- mountvol %%i: /L|find /I "volume">nul
- if !errorlevel! EQU 1 (echo %%i: no disk) else (echo %%i: yes )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |