Arquivo em lote para excluir o conteúdo da pasta uma vez por semana, EXCETO um arquivo .bat dentro da pasta

Arquivo em lote para excluir o conteúdo da pasta uma vez por semana, EXCETO um arquivo .bat dentro da pasta

Já vi muitas variações da minha situação, mas não consigo encontrar uma com a qual me sinta confortável (muito inexperiente). Basicamente eu tenho uma pasta (E:\Downloads) à qual as pastas são adicionadas e também contém um arquivo em lote (Extractor.bat). Gostaria de, uma vez por semana, excluir todas as pastas e arquivos de E:\Downloads, mas NUNCA excluir Extractor.bat. Obrigado por qualquer ajuda sobre isso! (A parte uma vez por semana não é necessária no script, sei que posso simplesmente definir uma tarefa do Windows para executar o arquivo bat em dias específicos).

Janelas 10

Responder1

Veja a Set DEBUG=echolinha?

Desative esta linha com REMou ::quando tiver certeza de que ela está fazendo o que você deseja. Este script é inofensivo enquanto existir.. nem tanto se você removê-lo.

A if /i not "%DownloadsDir%" == "%CD%"linha vem de ser estúpido e jogar fora todos os meus arquivos no diretório errado quando eu era mais jovem e mais burro.

Além disso .. você pode alterar cd /dpara pushde colocar um popdna parte inferior se estiver executando isso em cmd.exe e isso atrapalhar seu caminho atual.

@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

informação relacionada