2013-04-03 22 views
7

Sto cercando di creare un semplice script batch per cancellare/azzerare un'unità flash e riformattarlo. È per gli altri, quindi sto cercando di renderlo relativamente sicuro, bloccando la formattazione in C :, D :, ecc.Comando batch if else comando

Sto cercando un comando di tipo IF ELSE che posso usare, per essere un errore di cattura -tutti.

Ecco (la parte principale di) quello che ho ATM

:again 
echo. 
cls 
echo. 
echo Please select the drive letter for the flash 
echo drive you wish to erase 
echo. 
echo **** DO NOT SELECT C: OR D: **** 
echo. 
echo. 
echo *** Enter letter (no colon) ONLY e.g. "E" *** 
echo. 
set /p answer= 
cls 
echo. 
echo. 
echo. 
if /i "%answer:~,1%" EQU "e" format E: /x /fs:FAT32 /v:FORENSICS /p:2 
if /i "%answer:~,1%" EQU "f" format F: /x /fs:FAT32 /v:FORENSICS /p:2 
if /i "%answer:~,1%" EQU "g" format G: /x /fs:FAT32 /v:FORENSICS /p:2 
if /i "%answer:~,1%" EQU "h" format H: /x /fs:FAT32 /v:FORENSICS /p:2 
if /i "%answer:~,1%" NOT exist goto again && echo Please provide a valid drive letter for flash drive 
echo. 

Ora so che

if /i "%answer:~,1%" NOT exist goto again && echo Please provide a valid drive letter for flash drive 

non è sintassi valida, ma quello che ho potuto utilizzare al fine di raggiungere lo stesso obiettivo ? So che c'è un modo più efficace per fare questo (ad esempio, invece di definire 4 variabili per lettere di unità probabili, mettere una singola variabile che ascolta l'input dell'utente e accettarlo se esiste.)

Questa è la mia prima incursione in script batch (e script in generale) e sto imparando al volo, quindi il "più stupido" è possibile farlo, meglio è.

Grazie in anticipo.

+0

È inoltre necessario sfuggire la parentesi nel comando echo. –

+0

dove deve essere collocata questa parentesi? L'ho posizionato dopo "flash drive" e il comando è stato ripetuto. – CharlieTango92

+0

Nel tuo codice in cui ha qualcosa come echo blah ... (senza due punti) ... è necessario sfuggire alle parentesi. Sono sul mio telefono in modo da poter vedere il mio problema. –

risposta

13

Prova questo:

echo.%answer:~,1% | findstr /r /i "[e-h]" 
if %errorlevel% equ 0 (
    format %answer:~,1%: /x /fs:FAT32 /v:FORENSICS /p:2 
) else (
    echo Please provide a valid drive letter for flash drive. 
    goto again 
)