Henrik Sahl wrote:
> Afhængigt af hvilken error kode jeg får vil jeg gøre forskellige ting, men
> når jeg tester kan jeg ikke helt se logikken i error koderne.
>
> Eks.:
>
> Biblioteket c:\test eksisterer mens filen c:\test.txt ikke eksisterer, altså
> skal begge følgende ting fejle.
>
> del c:\test.txt
> echo %errorlevel%
>
> mkdir c:\test
> echo %errorlevel%
>
>
> Problemet er nu blot at sletningen af filen giver "0" mens at oprettelsen af
> biblioteket giver "1"
> Jeg troede at 0 var godt og alt andet var skidt.
>
> Could Not Find c:\test.txt
> 0
> A subdirectory or file c:\test already exists.
> 1
>
> Hvorfor giver de ikke begge "1" ?
>
Man kan tilsynladende ikke rigtigt stole på returværdien for del.
Så vidt jeg husker sætter del errorlevel til 1 hvis den fandt en
fil som den ikke kunne slette.
Man kan lave en workaroud i stil med:
del %1 2>&1 |findstr "Could Not Find" >nul 2>&1
if errorlevel 1 (
echo Success
) else (
echo Failure
)
Ideen er at få findstr til at checke om del kommandoen
skriver "Could not find", hvis ikke del gør det vil
findstr sætte errorlevel. %1 er filen der skal slettes.
Man kan også bruge "if exist whatever" før og efter
del til at checke om den gør det den skal.
Scriptet ovenfor vil skrive Success hvis del kan finde
filen, ellers Failure. Det virker måske ikke med på Win9x & ME
/b