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=echo
línea?
Deshabilite esta línea con REM
o ::
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 /d
y pushd
poner un popd
en 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