windows - Fjern alle filer og mapper undtagen en mappe

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil bruge Windows kommandolinje til at fjerne alle filer og mapper undtagen en, mappen '.svn'.
Jeg forsøgte at gøre det sådan, i to trin (min arbejdsmappe er den mappe, jeg vil rense):



  1. Fjern først alle mapper med undtagelse af '.svn': dir /B /A:D | findstr /V ".svn" | rmdir /Q

  2. Fjern alle filer: del * /F /Q



Trin 2 er OK, men for trin 1 får jeg en 'Kommandos syntaks er forkert.' fejl. Kastet af rmdir cmd. Har nogen ved, hvordan man gør det OK: Slet alle mapper bortset fra en.

Bedste reference


for /f "tokens=*" \%i in ('dir /B /A:D') do if ["\%i"] neq [".svn"] rd "\%i" /f /q


forklaring


for-loop opregner output fra dir-kommandoen. Du skal angive tokens=*, hvis der er mellemrum i katalognavnet.


Firkantede parenteser og dobbelt citater omkring omparametrene er et gammelt trick for at undgå problemer, hvis argumentet nogensinde ikke bliver noget (eller tomt) eller indeholder emner


Glem ikke at fordoble\% -signerne, hvis du vil sætte dette i en cmd-fil