17.11.2023, Vladimír Klaus, navštíveno 466x

Systém
Windows

U jednoho klienta došlo na jeho OneDrive místo, protože zálohy, které tam kopíruje, jsou stále větší a větší. S ohledem na to, že nepotřebuje tolik denních záloh, napadlo mě, že vždy po vytvoření nových, odstraním všechny soubory, které jsou starší než 3 dny.

Jak na Windows pomocí dávkového souboru odstranit ve složce soubory, které jsou starší než 3 dni, obr. 1

Chvíli jsem situaci řešil s ChatGPT a Bardem, ale nikam to nevedlo. A už jsem začal nadávat, že tohle AI moc nezvládla... Jedním z příkazů, který jsem zkoušel byl tento.

forfiles /p "e:\temp\" /s /m *.* /d -3 /c "cmd /c del @path"

Bohužel i po různých obměnách končil touto nic neříkající chybou, stejně tak nápověda neukázala nic zajímavého.

Jak na Windows pomocí dávkového souboru odstranit ve složce soubory, které jsou starší než 3 dni, obr. 2

Nakonec jsem příkaz rozchodil. Těžko uvěřitelným problémem bylo na konci cesty zpětné lomítko! Správný příkaz tedy vypadá takto:

forfiles /p "e:\temp" /s /m *.* /d -3 /c "cmd /c del @path"

Příkaz forfile je jinak velmi užitečný i pro jiné situace, než je mazání souborů. Vybere soubor (nebo sadu souborů) a provede na něm zadaný příkaz. Stručný význam parametrů (více se dozvíte v nápovědě forfiles /?):

  • /p - cesta
  • /s - včetně podadresářů
  • /m - maska (bohužel nejde zadat více masek najednou)
  • /d - počet dní, případně datum; číslo s mínusem znamená do minulosti, číslo s plusem do budoucnosti
  • /c - příkaz, který se má s nalezenými soubory provést

Zdroje: