letra de unidade de solicitação de arquivo em lote

1

Eu tenho trabalhado neste lote simples no Windows 7, ele tem uma letra de unidade definida para excluir todos os arquivos e pastas dentro. E se a unidade não foi montada, deve solicitar ao usuário que digite uma, aqui:

@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)

Quanto à parte IF EXIST , ela funciona perfeitamente, mas quando a unidade não está montada, quando você insere uma nova letra de unidade, ela não funciona. Alguma idéia ?, obrigado antecipadamente.

    
por Pedro Velez 11.09.2016 / 18:24

1 resposta

1

quando a unidade não está montada, quando você insere uma nova letra de unidade, ela não funciona

Você precisa enabledelayedexpansion :

Adicionar

setlocal enabledelayedexpansion

para o início do seu arquivo de lote e substitua %drive% por !drive!

Arquivo em lote corrigido:

@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

Leitura Adicional

por 11.09.2016 / 18:55