PDA

View Full Version : [DOS/Batch] Intercettare errore


cyber
12-03-2007, 09:42
Ragazzi sto diventando matto con questo file batch, praticamente devo cancellare un file temporaneo solo che devo ricevere un errore in caso di mancata cancellazione. Sto cercando in tutti i modi di intercettare l'errore generato dalla mancata esecuzione di 'del *.doc' ma senza riuscirci. Posto di seguito il file batch...

@ECHO OFF
CLS
IF EXIST c:\*.doc GOTO cancella
GOTO pulito

:cancella
DEL c:\*.doc
IF ERRORLEVEL 1 GOTO errore
IF ERRORLEVEL 0 GOTO cancellato
GOTO end

:errore
ECHO ERRORE
GOTO end

:cancellato
ECHO FILE CANCELLATO.
GOTO end

:pulito
ECHO L'UNITA' NON CONTIENE FILE DOC.
GOTO end

:END


Praticamente anche se il file *.DOC è aperto va sempre all'etichetta :cancellato ... è come se l'errore del Del non venga passato e/o intercettato dall'ERRORLEVEL.

Ragazzi aiuto!!! :mc:

repne scasb
12-03-2007, 10:45
Prova cosi':


@ECHO OFF
CLS
IF EXIST c:\*.doc GOTO cancella
GOTO pulito

:cancella
DEL c:\*.doc
IF EXIST c:\*.doc GOTO errore
GOTO cancellato

:errore
ECHO ERRORE
GOTO end

:cancellato
ECHO FILE CANCELLATO.
GOTO end

:pulito
ECHO L'UNITA' NON CONTIENE FILE DOC.
GOTO end

:END

cyber
12-03-2007, 10:59
E' la stessa cosa che avevo escogitato per aggirare il problema (sistema che trall'altro funzionava egregiamente), purtroppo mi è stato chiesto esplicitamente di gestire l'errore :rolleyes: :muro:

Grazie

repne scasb
12-03-2007, 11:11
Mi pare di ricordare, che DEL/ERASE non supporta in uscita alcun tipo di errore, dovrebbe essere sempre 0 (zero); sono pero' reminiscenze del DOS 3.32, da prendere con le "pinze".

cyber
12-03-2007, 11:23
a chi lo dici, saranno 13/14 anni che non metto mano ad un file batch :muro:

...aggiornamento, mi hanno chiesto anche di fare un controllo sulla data del file :D

Avessero confuso la shell DOS con quella Unix? :asd: