Bestanden zoeken die er niet zijn

Moderated forum for Dutch users

Moderators: white, Rein de Jong

Post Reply
jcamps
Junior Member
Junior Member
Posts: 40
Joined: 2006-04-21, 15:21 UTC
Location: Breda - Nederland

Bestanden zoeken die er niet zijn

Post by *jcamps »

Lid van het forum, en meteen een leuk probleem-puzzeltje ;-)

M'n muziekverzameling is gearchiveerd conform de volgende structuur
\Artiest\Album naam

In de directory albumnaam staan de muziekbestandjes en een .jpg bestand dat de hoes bevat.

Nu wil ik graag weten van welke albums ik géén hoesje heb. Dit is vast te bewerkstelligen met een mooie 'regular expression'. Iemand enige tips?

Gr. Johan
Co-auteur NL interface sinds V1.51eB (februari 1995), zie Help, Over Total Commander...
User avatar
Rein de Jong
Senior Member
Senior Member
Posts: 392
Joined: 2005-01-30, 20:26 UTC
Location: NL
Contact:

Post by *Rein de Jong »

Ik vraag me af of dat met een RegEx kan.

Wat je wilt in pseudecode is immers:

Code: Select all

ALS dir(*.jpg) is waar
   ALS dir heeft geen subdirs
      DOE niets
   Anders  
      DOE niets
Anders
   Lijst de directorie
Einde
TC ondersteund alleen het zoeken in één regel. Dus... Helaas pindakaas. Denk ik.

Ik kan het wel in Rexx of in VBscript.
Groetjes/
______/Rein

--- Moderator NL-forum ---
zie ook: https://www.reindejong.nl/totcmd
jcamps
Junior Member
Junior Member
Posts: 40
Joined: 2006-04-21, 15:21 UTC
Location: Breda - Nederland

Post by *jcamps »

Ik kom persoonlijk niet verder dan de eerste regel pseudocode om een naam te matchen....Kun je uberhaupt wel condities nesten in regex?

Gr. Johan
Co-auteur NL interface sinds V1.51eB (februari 1995), zie Help, Over Total Commander...
User avatar
Rein de Jong
Senior Member
Senior Member
Posts: 392
Joined: 2005-01-30, 20:26 UTC
Location: NL
Contact:

Post by *Rein de Jong »

Dat nesten kan. Met haakjes.

Heb je al op het tabblad plugins gekeken? Daar kan nog veel meer. Daar kon je testen op een waarde die door een content plugin wordt gegeven en dat met meerdere regels. Gewoon op waarde, of met een RegEx. Daar kan _echt_ heel veel! Maar ik weet niet hoe je moet tellen.
Groetjes/
______/Rein

--- Moderator NL-forum ---
zie ook: https://www.reindejong.nl/totcmd
User avatar
Rein de Jong
Senior Member
Senior Member
Posts: 392
Joined: 2005-01-30, 20:26 UTC
Location: NL
Contact:

Post by *Rein de Jong »

PS.

Pseude code zou moeten zijn:

Code: Select all

IF dir contains subdirs
   Do nothing
   IF dir(*.mp3) true
      IF dir(*.jpg) true
         DO nothing
      ELSE
         LIST dir-name
      END
   END
END
Ik leg dit even voor aan een externe adviseur (Sheepdog ;-)
Groetjes/
______/Rein

--- Moderator NL-forum ---
zie ook: https://www.reindejong.nl/totcmd
User avatar
white
Power Member
Power Member
Posts: 4594
Joined: 2003-11-19, 08:16 UTC
Location: Netherlands

Post by *white »

Er van uitgaande dat alle Albumnamen uniek zijn, weet ik wel iets..
  1. Ga naar de directory waarin de directories van de artiesten staan.
  2. (Deze stap is belangrijk!) Selecteer de directories van alle artiesten.
    Als er geen andere directories staan dan de directories van de artiesten kun je ook alles selecteren (ook de eventueel aanwezige bestanden), bijv. m.b.v. Home, Pijl omlaag, Shift+End.
    Je kunt ook alleen die artiesten selecteren die je wilt controleren.
  3. Kies voor menu Opdracht/Zoek bestand (Alt+F7).
  4. Ga naar het tabblad Geavanceerd en vink Attributen aan en vink Directory aan (achtergrond moet wit zijn).
  5. Klik op Start zoeken. Er wordt alleen naar directories gezocht.
  6. Klik op Naar bestandslijst.
  7. Zorg dat er in het inactieve panel een lege directory weergegeven wordt. Maak eventueel daarvoor een nieuwe directory aan.
  8. Selecteer alles (alle zoekresultaten).
  9. Kies voor kopieeren (F5).
  10. Type bij 'Alleen bestanden van dit type': *.jpg
  11. Klik op OK. De directory structuur en de *.jpg bestanden worden nu gekopieerd naar de lege directory.
  12. Maak het inactieve panel actief (Tab).
  13. Zorg ervoor dat de Weergave van het panel staat op Lang (druk eventueel op Ctrl+F2).
  14. Druk op Alt+Shift+Enter. Nu moet je precies kunnen zien welke albums geen hoes hebben en welke wel.
(Bron: Creatief met TC)




In de vertaalde KEYBOARD.txt staat de betekenis van Alt+Shift+Enter.

Code: Select all

ALT+SHIFT+ENTER        De inhoud van alle directories in de huidige directory wordt opgeteld. De grootte wordt dan weergegeven op de plaats van de string <DIR> (in de 'volledige' weergave).
Door de vertaling heeft de uitleg helaas nogal wat aan duidelijkheid ingeboekt.

De originele KEYBOARD.TXT luidt:

Code: Select all

ALT+SHIFT+ENTER        The contents of all directories in the current directory are counted. The sizes of the directories are then shown in the 'full' view instead of the string <DIR>.
User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Post by *Sheepdog »

Maak batchfile met deze inhoud.
Alle folders die mp3 maar geen JPG wil hebben worden geschreven aan c:\liste.txt
(babelfish vertaling)

Code: Select all

@echo off
for /f "delims=" %%a in ('dir *.mp3 /b /s') do if not exist %%~dpa*.jpg echo %%~dpa >>c:\liste.txt

rem The first part 
rem (FOR /F %%A IN ('DIR *.MP3 /B /S') 
rem searches the directory and all subdirectories for any file with name "*.mp3"
rem If there is any such file the variable %a ( you have to use in batch files 2 "%" signs)
rem is set to the filename of the mp3-file
rem Thus the "%~dpa" gives the full pathname without a filename.
rem
rem the second part "IF NOT EXIST %%~DPA*.JPG checks if there is in the directory that
rem contains an *.mp3 any *.jpg present.
rem If not the third part "ECHO %%~DPA >>C:\LISTE.TXT" will be executed and
rem add the full path of those directories that do contain an MP3-file but do not contain
rem an *.JPG file to the file C:\Liste.txt
rem 
rem So if you run this batchfile more than once the list each time will be expanded


"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
jcamps
Junior Member
Junior Member
Posts: 40
Joined: 2006-04-21, 15:21 UTC
Location: Breda - Nederland

Post by *jcamps »

@White
Methode werkt, toont de kracht van total commander!
Enige nadeel: als je meerdere albums hebt met dezelfde naam (bv. greatest hits) dan vraagt ie steeds of je het bestaande .jpg bestand wil overschrijven. Je kunt dan achteraf niet herleiden of een van de greatest hits directories een hoesje mist.
Kortom: werkbaar

@Sheepdog
Deze is wel heel erg mooi en werkt perfect. De file geeft een 'hit' voor elk mp3 bestanden in een directory waar geen hoesje in staat. (Dus 12 hits als er 12 mp3 bestanden staan in een directory zonder hoesje). Zeer acceptabel.

Ik heb de batchfile op twee punten aangepast
1-verwijzing naar c:\liste.txt gewijzigd in nocover.txt (zonder harde padnaam)
2-tweede regel gemaakt die naar *.flac bestanden zonder hoesje zoekt.

Heel veel dank!

Gr. Johan
Co-auteur NL interface sinds V1.51eB (februari 1995), zie Help, Over Total Commander...
Post Reply