1

Я работал над этим простым пакетом в 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 ответ1

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

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .