Por que não usar IF EXIST
novamente? Pela minha experiência, ERRORLEVEL
é estranho às vezes (como é neste caso, leia mais ), por tanto tempo como há uma alternativa (que funciona), use!
De qualquer forma, aqui está minha solução testada e funcionando:
PUSHD "%Adminlogpathtofolder%"
FOR /F "delims=" %%i IN ('DIR /A:D /B') DO (
RD /S /Q "%%i" >nul 2>&1
IF EXIST "%%i" ECHO Failed to delete "%%i" && SET "cache_delete_status=failure"
)
IF "cache_delete_status"=="failure" (ECHO Unable to delete the admin cache) ELSE (ECHO Admin Cache Deletion Successfully & SET "cache_delete_status=success")
E para a 2ª parte:
PUSHD "%Adminpathtofolder%"
FOR /F "delims=" %%i IN ('DIR /A:D /B^|FINDSTR /VLIX "stage security logs"') DO (
RD /S /Q "%%i" >nul 2>&1
IF EXIST "%%i" ECHO Failed to delete "%%i" && SET "cache_delete_status=failure"
)
IF "cache_delete_status"=="failure" (ECHO Unable to delete the cache) ELSE (ECHO Cache Deletion Successfully & SET "cache_delete_status=success")
Eu não sei se isso é proposital ou não, mas você usa a variável chache_delete_status
para ambas as partes, então isso pode mostrar um erro na segunda parte, mesmo que não haja nenhuma. Eu recomendo que você use uma variável diferente para ser verificada na segunda parte, se você não quer que isso aconteça.