Allgemeines 22.015 Themen, 149.126 Beiträge

Ordner nach deren Inhalt suchen

i.mer / 6 Antworten / Baumansicht Nickles

Hallo Leute, ich stehe vor folgender Aufgabe:

gegeben sind einige Tausend Ordner, diese haben Namen wie 20070217, was jetzt aber egal ist.

Der Inhalt sind kleine Dateien, zwischen 1 und 30 pro Ordner (unregelmäsig verteilt), von Typen dbA, dbB, dbC etc., meistens nur ein Typ pro Ordner, bis auf schätzungsweise jeden 15. Ordner.

Ich muss nun möglichst einfach die Ordner finden, die z.B. nur .dbA und .dbC enthalten, nicht aber .dbB und .dbD, damit man diese dann verschieben, löschen etc. kann.

wie und womit stelle ich das am besten an?

LG Mc Kübel

bei Antwort benachrichtigen
rill i.mer „Ordner nach deren Inhalt suchen“
Optionen

Ich gehe mal von Windows als Betriebssystem aus, obwohl das BS nicht erwähnt wird.

Die gestellte Aufgabe sollte in der CMD-Box mit dem uralten DIR-Befehl lösbar sein. Alle Optionen zu dir findest Du mit dir /?. Um Unterverzeichnisse einzuschließen, kann man /s verwenden. Auf korrekte Pfadangaben ist unbedingt zu achten bzw. man muß "an der richtigen Stelle stehen", wenn man den DIR-Befehl startet.

konkret: dir *.dba /s bzw. dir *.dbc /s

Ich wüßte jetzt keine andere Lösung als mit 2 Durchläufen.

Mit Ausgabeumleitung ">" kann das Ergebnis auch in eine Datei geschrieben werden, z. B. so:
dir *.dba /s > alle_dba.txt bzw. dir *.dbc /s > alle_dbc.txt

Zum "Rumspielen" kannst Du z. B. alle DLL-Dateien im Windows-Ordner anzeigen lassen:
dir *.dll bzw. dir *.dll /s

/p gibt seitenweise aus (nicht bei Umleitung in eine Datei verwenden!).

Es gibt mit Sicherheit noch elegantere Möglichkeiten, die aber diverse Programmierkenntnisse voraussetzen.


rill

bei Antwort benachrichtigen
i.mer rill „Mit DIR sollte es gehen ...“
Optionen

Ja, aber dann habe ich die Dateien, und die kann ich auch mit jeder anderen Suchfunktion auch finden.

Ich will aber, dass mir die Ordner angezeigt werden, in denen die gesuchten Dateitypen vorliegen (und niht gesuchte nicht vorliegen), und zwar so, dass ich die dann weiter verwenden kann, etwa verschieben.

bei Antwort benachrichtigen
rill i.mer „Naje, nicht ganz...“
Optionen
bei Antwort benachrichtigen
Edgar Rau rill „Leider keine Idee für diesen speziellen Fall (k. T.)“
Optionen

Hi,

wenn alle diese Dateien auf C: sind:

Erstelle eine Batch Datei mit folgenden Befehlen:

xcopy C:\*.dba d:\dba\ /s
xcopy C:\*.dbc d:\dbc\ /s


Ich habe mal testweise zwei Ordner (dba und dbc) auf D: erstellt; wenn Du die Dateien woanders hin kopiert haben möchtest, musst Du die Befehle entsprechend ändern.

Viel Erfog.


Gruß Edgar




Wer brauchen ohne zu gebraucht, braucht brauchen gar nicht zu gebrauchen
bei Antwort benachrichtigen
rill Edgar Rau „Hi, wenn alle diese Dateien auf C: sind: Erstelle eine Batch Datei mit folgenden...“
Optionen

Wäre aber ähnlich wie bei meinem DIR-Vorschlag auch nicht das gewünschte Ergebnis, da ja nur dann kopiert/verschoben werden soll, wenn im jeweiligen Ordner andere Dateien mit bestimmten Endungen existieren. Man müßte also mit Wenn/Dann-Abfragen operieren - diesbezüglich kenne ich mich in der Batch-Programmierung aber auch nicht aus.

rill

bei Antwort benachrichtigen
i.mer Edgar Rau „Hi, wenn alle diese Dateien auf C: sind: Erstelle eine Batch Datei mit folgenden...“
Optionen

..., wie dumm von mir, xcopy vergessen zu haben. Damit kann doch die Struktus mitkopiert werden (mit /e sogar inkl leerer Ordner, aber das will ich ja nicht).

Ich habe es genau so gemacht, naja, nicht ganz, die Gänsefüschen darf man bei leerzeichenbehaftetetn Ordnernamen nicht vergessen ;)

Und es geht natürlich. Aber doch nicht ganz. Geemischte Ordner sind für ihn egal, er kopiert *.dbA nach \neu-dba\ und *.dbC nach \neu-dbc\ und bei gemischten Ordnern gibt es natürlich zwei Unterordner ala \20070219\.

Naja, immerhin. dann muss ich mich mi IF auseinandersetzen...

Ach, früher hätte ich sowas nicht gefragt, aber langsam wird man ja ganz klicki-bunti :(

Nochmals vielen Dank.

bei Antwort benachrichtigen