Wyszukaj określony plik w zestawie folderów. Jeśli ten plik jest jedynym w folderze, usuń folder

1

Mam bardzo dużą bibliotekę książek elektronicznych. Struktura jest następująca:

/Library
   /Author Name
      /Book Name
         /{.pdf .mobi .epub eBook files}, {.opf metadata files}, {.jpg book cover files}

Około 15% z 11 000 folderów „Book Name”, które mam, zawiera tylko plik .opf, a czasem plik okładki .jpeg / .jpg / .png / .gif, bez plików eBook.

Chciałbym napisać coś, co może znaleźć foldery, które nie zawierają pliku eBook (.pdf / .epub / .mobi) i usunąć zawartość folderu „Nazwa książki”, samego folderu „Nazwa książki”, a jeśli to jest jedynym folderem „Book Name” w folderze „Author Name”, usuń również folder „Author Name”.

Wiem o tym doskonale, ale będę kontynuować badania i zamieszczać moje wyniki tutaj, jeśli ktoś inny nie będzie mógł mi pomóc.

Kok
źródło

Odpowiedzi:

1

Zakładając, że korzystasz z najnowszego systemu Windows ... Rozbiłbym to na dwa kroki.

CD na „Library” i ...

  1. Usuń pliki z folderów bez ebooków:

    for /f "delims=" %F in ('dir /s/b/a-d *.opf') do dir /b "%~pF*.pdf" "%~pF*.epub" "%~pF*.mobi" || del "%~pF*.*"
    

    (Jeśli masz wiele plików do kasowania, dodaj / q możliwość del nie mieć monity)

  2. Rekurencyjnie usuwaj puste katalogi w systemie Windows :

    for /f "delims=" %D in ('dir /s/b/ad ^| sort /r') do rd "%D"
    
SΛLVΘ
źródło
Dzięki Salvo, co za świetne rozwiązanie. Wkrótce to wypróbuję.
Bob