批处理文件提示驱动器号

批处理文件提示驱动器号

我一直在 Windows 7 中处理这个简单的批处理,它设置了一个驱动器号以删除其中的所有文件和文件夹。如果驱动器未安装,它应该提示用户输入一个,如下所示:

@echo off 
set folder="t:\"

IF EXIST "%folder%" (

    cd /d %folder%
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

)ELSE (@echo this drive is not mounted, please enter a new one.

set /p drive=

    cd /d %drive%
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
@pause)

至于IF EXIST部分,它运行完美,但是当驱动器未安装时,一旦输入新的驱动器号,它就不会工作。有什么想法吗?提前谢谢。

答案1

当驱动器未安装时,一旦输入新的驱动器号,它将不起作用

你需要enabledelayedexpansion

添加

setlocal enabledelayedexpansion

到批处理文件的开头并替换%drive%!drive!

更正的批处理文件:

@echo off 
setlocal enabledelayedexpansion
set folder="t:\"

IF EXIST "%folder%" (
  cd /d %folder%
  for /F "delims=" %%i in ('dir /b') do (
    rmdir "%%i" /s/q || del "%%i" /s/q
    )
  ) ELSE (
  @echo this drive is not mounted, please enter a new one.
  set /p drive=
  cd /d !drive!
  pause
  for /F "delims=" %%i in ('dir /b') do (
    rmdir "%%i" /s/q || del "%%i" /s/q
    )    
  )
  @pause
endlocal

进一步阅读

相关内容