Archivo por lotes para eliminar el contenido de la carpeta una vez por semana EXCEPTO un archivo .bat dentro de la carpeta

Archivo por lotes para eliminar el contenido de la carpeta una vez por semana EXCEPTO un archivo .bat dentro de la carpeta

He visto muchas variaciones de mi situación pero no puedo encontrar una con la que me sienta cómodo (muy inexperto). Básicamente tengo una carpeta (E:\Descargas) a la que se agregan carpetas y también contiene un archivo por lotes (Extractor.bat). Me gustaría, una vez a la semana, eliminar todas las carpetas y archivos desde E:\Downloads pero NUNCA eliminar Extractor.bat. ¡Gracias por cualquier ayuda en esto! (La parte una vez a la semana no es necesaria en el script, sé que puedo configurar una tarea de Windows para ejecutar el archivo bat en días específicos).

ventanas 10

Respuesta1

¿Ves la Set DEBUG=echolínea?

Deshabilite esta línea con REMo ::cuando esté seguro de que está haciendo lo que desea que haga. Este script es inofensivo mientras existe... no tanto si lo eliminas.

La if /i not "%DownloadsDir%" == "%CD%"frase proviene de ser estúpido y borrar todos mis archivos en el directorio equivocado cuando era más joven y tonto.

Además... puedes cambiar cd /dy pushdponer un popden la parte inferior si estás ejecutando esto dentro de cmd.exe y estropea tu ruta actual.

@echo off
SetLocal
Set DEBUG=echo

Set DownloadsDir=E:\Downloads

cd /d %DownloadsDir%
if /i not "%DownloadsDir%" == "%CD%" echo Bad directory! && goto :EOF

for /F "delims=" %%d in ('dir /ad /b') do %DEBUG% rd /s /q "%%d"
for %%f in (*.*) do if /i not "%%f"=="Extractor.bat" %DEBUG% del /F /Q "%%f"

EndLocal

información relacionada