Anzeige der Unterverzeichnisse im Verzeichnis oder Fehlsuche

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Anzeige der Unterverzeichnisse im Verzeichnis oder Fehlsuche

Post by *Peter »

Folgendes Problem:

Ich habe eine grosse Gruppe von Verzeichnissen, in denen sich eine immer gleiche Unterstruktur aufbaut. (Das heisst, die Unterstruktur ist nich tüberall vollständig vorhanden.)

Bsp.:

Code: Select all

c:\1
c:\2
c:\3
...
In jedem Verzeichnis gibt es

Code: Select all

Unterverzeichnis a und a.txt
ev. Unterverzeichnis b und b.txt
ev. Unterverzeichnis c und c.txt
Die Anzahl und die Wortlänge der möglichen Unterverzeichnisse ist beschränkt und gut überschaubar.

Nun geht es darum, Verzeichnisse zu finden, die z.B. kein Unterverzeichnis "c" haben.

Ansatz 1:
Ich suche nicht nach dem Verzeichnis, sondern nach der nicht vorhandenen datei "c.txt". Das ist hier http://ghisler.ch/board/viewtopic.php?t=7498 schon mal behandelt, aber nicht abschliessend geklärt.

Ansatz 2:
Ich übertrage die Pfade in Datenbanken und analysiere dort. Möglich, aber mühselig, langsam und nicht gut.

Ansatz 3:
Man zeigt die Unterverzeichnisse in den benutzdefinierten Spalten des Verzeichnisses an. Mit dem Scriptplugin könnte das gehen, das zu jedem Verzeichnis die eine Stufe tiefer liegenden Verzeichnisse als Zeichenkette angezeigt würden. Da reicht es bei mir aber nur zur Idee, nicht zu mehr.

Geht es auch eleganter?

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
sqa_wizard
Power Member
Power Member
Posts: 3896
Joined: 2003-02-06, 11:41 UTC
Location: Germany

Post by *sqa_wizard »

OK, wie sieht folgender Ansatz aus:

Schritt 1:
Kopiere ein Verzeichnis mit vollständiger Struktur (keine fehlenden Verzeichnisse) in jedes der anderen Verzeichnisse.
Achte dabei darauf, dass du NUR die Struktur kopierst !!!

Das funktioniert einfach, indem du das unterste Verzeichnis kopierst und als "Nur Dateien diesen Typs" etwas garantiert nicht existierendes (z.B. "dat.gibbetnich") angibst.

Nun hast du überall die gleiche Struktur.

Schritt 2:
Installiere das DirSizeCalc-Inhalts-Plugin.

Schritt 3:
Führe eine Suche durch: Plugin-Tab "dirsizecalc Leer = Ja"
"Suchen in Plugins" einschalten nicht vergessen !!!

Damit hast du alle leeren Verzeichnisse gefunden (die vorher noch gar nicht existiert haben)
#5767 Personal license
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

sqa_wizard wrote:OK, wie sieht folgender Ansatz aus:
...Nun hast du überall die gleiche Struktur...
Danke, aber das geht leider nicht. Die Struktur hat eine Bedeutung bund darf nicht nebenbei leer erstellt werden.

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
norfie²
Power Member
Power Member
Posts: 1040
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

2Peter
Mit dem TCmd faellt mir dazu keine Loesung ein, aber mit einem Script geht dies, welches eine Datei z.B. liste.txt generiert. Liste.txt kann dann fuer "Markieren\Auswahl aus Datei" verwendet werden.

Hier mal das Prinzip:
search.cmd wrote:if exist liste.txt del liste.txt
for %%d in (1 2 3) do if not exist %%d\c\NUL (
echo %%d\>>liste.txt
)
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Danke Norfie²

aber irgendwie übersteigt das meine Kenntnisse. Der Code ..(1 2 3) .. ist ein Platzhalter für Verzeichnisse oder wie spreche ich das an? Meine Liste.txt besteht derzeit nur aus den Zeilen
1\
2\
3\

Mein Ansatz 3 - "erzeuge zu jedem Verzeichnis die Namen der (direkten) Unterverzeichnisse als String und zeige sie als "content für das Scriptplugin" - wie siehst du das?

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
norfie²
Power Member
Power Member
Posts: 1040
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

2Peter
Alle Wege fuehren nach Rom. :-)

Hier ein Vorschlag, der bei mir hier funktioniert

Kopiere das hier in die Zwischenablage und erstelle damit einen Button im TCmd ueber Rechtsklick auf die Buttonbar mit "Einfuegen"
TCmd Button:

Code: Select all

TOTALCMD#BAR#DATA
search.cmd
?c      %F
TOTALCMD.EXE,3
search


-1
Lege die Datei search.cmd an (eventuell im Button den Pfad zur search.cmd modifizieren). Hier der angepasste Inhalt dazu:

Code: Select all

if exist liste.txt del liste.txt 
for /f "delims=" %%I in (%2) do if not exist "%%I%1\" ( 
  echo %%I>>liste.txt
)
Markiere dann alle Verzeichnisse, welche untersucht werden sollen und druecke auf den Button. Dabei erscheint eine Abfrage.
Das "c" ist das Unterverzeichnis, welches gesucht wird bzw. dessen Fehlen gesucht wird.
Der dahinter erscheinende Dateiname ist eine Listendatei des TCmd, welche die markierten Verzeichnisse enthaelt.
Das "c" kannst Du anpassen, die TCmd-Listendatei muss unveraendert bleiben. Dann drueckst Du auf "ok" und es wird eine liste.txt erzeugt. Die Datei liste.txt kann fuer "Markieren\Auswahl aus Datei" verwendet werden.

EDIT: Jetzt duerfen auch Verzeichnisse mit Leerzeichen enthalten sein.
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

norfie² wrote:... erstelle damit einen Button im TCmd ueber Rechtsklick auf die Buttonbar mit "Einfuegen"...
TC7? Ich musste es noch (TC 6.56) mit Handarbeit machen.

Aber es läuft, sehr schnell - herzlichen Dank.

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
norfie²
Power Member
Power Member
Posts: 1040
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

TC7?
Yep.
herzlichen Dank
Gern geschehen. :)
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

So, nun ein bisschen aufgeblasen mit

- genauer Pfadangabe der Liste
- drei Komentarzeilen am Anfang über Suchinhalt
- zwei CMD-Versionen: einmal die Suche nach fehlendem, dann die Suche nach vorhandenem (Das vorhandene fände man auch über TC; der läuft aber die ganze Unterstruktur durch. Die Lösung ist höllisch schnell - 2 sec für 700 Verzeichnisse ..)

Suche nach fehlendem:

Code: Select all

if exist d:\fehl_liste.txt del d:\fehl_liste.txt 
echo Suchprogramm nach fehlendem:>>d:\fehl_liste.txt
echo %1>>d:\fehl_liste.txt
echo ----------->>d:\fehl_liste.txt
for /f %%I in (%2) do if not exist %%I\%1\NUL ( 
 for %%d in (%%I) do ( 
  echo %%d>>d:\fehl_liste.txt
 ) 
)
Suche nach vorhandenem:

Code: Select all

if exist d:\such_liste.txt del d:\such_liste.txt 
echo Suchprogramm nach:>>d:\such_liste.txt
echo %1>>d:\such_liste.txt
echo ----------->>d:\such_liste.txt
for /f %%I in (%2) do if exist %%I\%1\NUL ( 
 for %%d in (%%I) do ( 
  echo %%d>>d:\such_liste.txt
 ) 
)

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
norfie²
Power Member
Power Member
Posts: 1040
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

2Peter
Das vorhandene fände man auch über TC; der läuft aber die ganze Unterstruktur durch.
Seit V7 laesst sich die Suchtiefe einstellen. :D
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
Post Reply