检查驱动器号是否存在批处理,或者转到另一段代码

时间:2014-06-05 12:35:40

标签: windows batch-file cmd

我正在尝试创建一个代码来检测驱动器号是否存在。

例如,要检查C:驱动器是否存在,我的代码是:

@echo off
title If Exist Test

:main
CLS
echo.
echo press any key to see if drive C:\ exists
echo.
pause>nul
IF EXIST C:\ GOTO yes
ELSE GOTO no

:yes
cls
echo yes
pause>nul
exit

:no
cls
pause>nul
exit

但是它不起作用,它要么:如果C:存在则是,或者如果不存在则将其换成空白屏幕。我做错了什么,所以它不会去:不?

4 个答案:

答案 0 :(得分:11)

代码中的主要问题是if ... else语法。需要将完整命令作为单个代码块读取/解析。它并不意味着它应该写在一行中,但如果不是,则行必须包含解析器的信息,以便它知道命令在下一行继续

if exist c:\ ( echo exists ) else ( echo does not exist)

----

if exist c:\ (
    echo exists
) else echo does not exist

----

if exist c:\ ( echo exists
) else echo does not exist

----

if exist c:\ (
    echo exists
) else (
    echo does not exist
)

以前的任何代码都可以按预期工作。

无论如何,检查驱动器的根文件夹会为某种驱动器生成一个弹出窗口(在我的例子中是多卡读卡器)。要避免它,请使用vol命令并检查errorlevel

vol w: >nul 2>nul
if errorlevel 1 (
    echo IT DOES NOT EXIST
) else (
    echo IT EXISTS
)

答案 1 :(得分:5)

@echo off
title If Exist Test

:main
CLS
echo.
echo press any key to see if drive C:\ exists
echo.
pause>nul
::NB: you need the brackets around the statement so that the file 
::knows that the GOTO is the only statement to run if the statement 
::evaluates to true, and the ELSE is separate to that.
IF EXIST C:\ (GOTO yes) ELSE (GOTO no)

::I added this to help you see where the code just runs on to the
::next line instead of obeying your goto statements
echo no man's land

:yes
::cls
echo yes
pause>nul
exit

:no
::cls
echo no
pause>nul
exit

答案 2 :(得分:0)

尝试包含“echo no”。在 ':no' 下使用这个

答案 3 :(得分:-1)

已验证可在Win7下工作。 尝试使用您选择的(现有的和不存在的)驱动器号:

@IF EXIST O:\ (GOTO cont1)
@ECHO not existing
@GOTO end

:cont1
@ECHO existing!

:end