Dateien in Verzeichnis und Unterverzeichnis auslesen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smileys
:-) ;-) 8-) :-( :arrow: :idea: :like: :keen:
Mehr Smileys anzeigen

BBCode ist ausgeschaltet
Smileys sind eingeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Dateien in Verzeichnis und Unterverzeichnis auslesen

von DOSferatu » Mo 2. Feb 2009, 23:42

Ja, Vista 32bit hat meines Wissens noch einen (eingeschränkten) "DOS-Modus". Das heißt, es läuft noch mit Programmen, die nur Textmode brauchen, aber keine Grafik mehr. Das 64bit Vista dagegen kann gar keine DOS-Programme mehr ausführen.
Ein Kumpel hat beides und hat das getestet.

von Nono » Mo 2. Feb 2009, 21:12

nur unter 64bit versionen läufts nicht, sonst vista glaube schon.

von DOSferatu » Do 29. Jan 2009, 12:59

Ja, in meinem Tool ist ja ebenfalls die Anzeige der Verzeichnisse "deaktiviert". (Sie wurden in der vorletzten Version versehentlich wieder angezeigt, als ich etwas anderes eingebaut hatte und dadurch in einer Abfrage einen Modus vergessen hatte.) Man kann wahlweise Verzeichnisnamen, Dateinamen oder beides ausgeben. Und es läuft unter DOS und unter Windows 95/98, NT4, Win2000 und WinXP. (Ob unter Windows ME oder Windows Vista, weiß ich nicht.) Wenn unter Windows benutzt, dann werden auch lange Datei-/Verzeichnisnamen unterstützt. (DOS hat ja bekanntlich keine langen Dateinamen.)
(Hm... Also "exportieren" kann man die erstellte Liste ja sowieso. Sie wird in ein normales menschenlesbares Textfile geschrieben, das quasi von jedem Programm gelesen werden kann.)
Naja, und Freeware ist mein ganzes Zeug ja sowieso immer.
Man kann auch Files und Filebereiche ein-/ausschließen oder Files bestimmter Größe oder nach Filedatum ein-/ausschließen. Diese Optionen liegen daran, daß ich das Tool aus einem anderen meiner Tools rausoperiert habe und dessen Optionen übernommen habe.

von Gast » Do 29. Jan 2009, 11:32

Wenn jemand so einen Fall unter anderen Betriebssystemen hat kann ich den in Java geschriebenen Jfilelister empfehlen. Dort hat man unter dem Punkt "Drop Region" die Möglichkeit die Auswahl "Display path" zu deaktivieren. Das Ergebnis ist eine reine Dateiliste die sich auch exportieren lässt. Das Ganze ist auch noch open source: http://sourceforge.net/projects/jfilelister

von DOSferatu » Mo 26. Jan 2009, 18:57

Bitte,
DOSferatu

von Nono » Mo 26. Jan 2009, 18:15

Hey, vielen vielen Dank für deine Mühe, das Programm ist gut, hat aber noch einen Fehler und zwar gibt es, wenn ich f wähle, also nur dateien, die ordner mit aus und rückt nix ein, die ordner sollen aber in diesem fall nicht mit ausgegeben werden.

Ansonsten ist alles Prima.

Vielleicht kannst du die Kleinigkeit bitte nocheinmal anpassen?

Danke,
Nono

von DOSferatu » Mo 26. Jan 2009, 03:44

Falls die 0.02 schon runtergeladen, dann jetzt NOCHMAL laden. Habe noch eine 0.03 gebaut, die gegenüber den vorherigen Versionen WAHNSINNIG schnell geworden ist (könnte erklären, warum, aber muß nicht sein, denke ich).
Außerdem können bei der Pfadangabe nun ebenfalls die langen Dateinamen angegeben werden.
Teste das und sag Bescheid, wenn es noch Änderungswünsche gibt.

von DOSferatu » Mo 26. Jan 2009, 00:48

@nono:
So, das Tool ist fertig. War in den letzten Tagen anderweitig beschäftigt, aber hab mir heute mal 'ne Stunde Zeit genommen und das restliche Zeug eingebaut und noch ein wenig die Beschreibung erneuert.
Version 0.02 ist ab sofort online und unter derselben Stelle herunterzuladen:
http://www.imperial-games.de/html/dosa2.htm

Hoffe, es entspricht Deinen Wünschen. Wenn nicht, meld' Dich noch mal.

von Nono » Do 22. Jan 2009, 17:48

;) sehr gute vorgehensweise ;)

Nur Dateien: A (ohne Backslash, also nur dateiname)
Nur Verzeichnisse: A (ohne Backslash, nur verzeichnisname)
Dateien+Verzeichnisse: A 3 (wie bei den anderen beiden und mit einrückung)

Danke,
Nono

von DOSferatu » Do 22. Jan 2009, 16:07

Alle 3 Möglichkeiten sind ohne Weiteres möglich, da ich dies sowieso schon vorausgesehen hatte...

Für die Verzeichnisse stellt sich nun noch die Frage:
Angenommen, Du hast so einen Pfad:
C:\DATEN\MUSIK\HEAVYMETAL\JUDAS_PRIEST

und Du willst ausgehend vom Verzeichnis MUSIK alle Unterverzeichnisse (und evtl auch die Files darin) auflisten. Wie sollen dann z.B. das Verzeichnis JUDAS_PRIEST aussehen?

Antwort A:
(Nur der Verzeichnisname)
\JUDAS_PRIEST

Antwort B:
(Verzeichnis-Rest-Pfad, ausgehend vom gewählten Startverzeichnis)
\HEAVYMETAL\JUDAS_PRIEST

Antwort C:
(Verzeichnispfad, inklusive des Startverzeichnisnamens)
\MUSIK\HEAVYMETAL\JUDAS_PRIEST

Antwort D:
(Vollständiger Verzeichnispfad)
C:\DATEN\MUSIK\HEAVYMETAL\JUDAS_PRIEST

Wählen Sie die richtige Antwort A, B, C oder D und gewinnen Sie 500 Euro! Nur 50 ct auf dem deutschen Festnetz - Mobiltelefontarife können abweichen...

Und, noch eine Frage:
Speziell für die "Gemischte" Form (also Verzeichnisnamen UND Dateien), empfiehlt es sich eventuell, die Verzeichnisse in irgendeiner Form zu kennzeichnen (um sie von den Dateien zu unterscheiden). In dem anderen Programm wird ein Verzeichnis daran erkannt, daß es den "Restpfad" enthält - und damit immer mit einem Backslash (\) beginnt. (Also das andere Programm benutzt Variante B.)
(Anmerkung: Du MUßT bei Variante A und B NICHT UNBEDINGT einen Backslash da haben, es geht auch ohne führenden Backslash zu machen oder mit nem anderen Zeichen.)

Möglich wären z.B.:
1)
Eine Leerzeile oder lange Linie (z.B. aus Strichen ---) oder sowas vor jedem neuen Verzeichnis.

2)
Ein spezielles Zeichen vor einem Verzeichnisnamen, damit man Verzeichnisse und Dateien unterscheiden kann (vor allem bei Variante A ohne führenden Backslash eventuell zu empfehlen, da sonst Verzeichnisse und Dateien völlig gleich aussehen)

3)
Einrücken der Dateinamen, so daß Verzeichnisnamen am Zeilenanfang stehen und Dateinamen z.B. um 3 Leerzeichen eingerückt sind oder sowas.

Auch hier wieder wählen: 1, 2 oder 3... (ja, wie dieses Spiel in dieser Kindersendung... - und ob ihr wirklich richtig steht, sehr ihr, wenn das Licht angeht...)

Und es wäre auch möglich, daß man diese Variante NUR anwendet, wenn die gemischte Ausgabe erfolgt (also Verzeichnisse UND Dateien) und daß man sie NICHT anwendet, wenn NUR Verzeichnisse oder NUR Dateien ausgegeben werden. Außerdem wäre es möglich, daß, wenn NUR Verzeichnisse ausgegeben werden, eine andere Art der Verzeichnisausgabe erfolgt als wenn die gemischte Ausgabe erfolgt.

Die Ausgabeformen werden durch Kommandozeilenparameter wählbar sein UND (wenn ohne Parameter) durch Eingabe. (Weil ich weiß, daß es sich unter Windows äußerst lästig gestaltet, wenn man da Kommandozeilenparameter benutzen will.)

Nur Dateien (Files) hat Parameter /F
Nur Verzeichnisse (Paths) hat Parameter /P
Beides (Both) hat Parameter /B
Groß/Kleinschreibung wird egal sein (also auch z.B. /f möglich), außerdem wird anstatt des Slashs (/) auch das Minuszeichen (-) benutzt werden können.


Hier also mein Fragebogen. Zu jeder Ausgabeform bitte die gewünschten Buchstaben (A bis D) und Ziffern (1 bis 3) angeben. Dann braucht man nicht so rumrätseln.
(Beispiel: Dateien+Verzeichnisse: C 2)

Nur Dateien:
Nur Verzeichnisse:
Dateien+Verzeichnisse:

Dann noch die Frage: Welcher der 3 obengenannten AusgabeModi (Dateien, Verzeichnisse, Beide) soll der Standardausgabemodus sein - für den Fall, daß keine Parameter angegeben werden? [F,P,B]
Standard-Ausgabemodus:


Schlußbemerkung, die zu beachten sind:
Es wird nur die folgende Probleme betreffend die langen Dateinamen geben:

I. Wird das Programm unter reinem DOS gestartet (ohne Windows drumherum), ist die Umwandlung in lange Dateinamen nicht möglich, daher MUß das Programm unter Windows gestartet werden, um lange Dateinamen zu erhalten.

II. Das Starten unter Windows per Doppelklick startet zwar das Programm, aber man hat dadurch NICHT die Möglichkeit, ein Startverzeichnis oder die Parameter zu übergeben. In diesem Fall (also wenn ohne Parameter gestartet) wird das Programm am Anfang das Startverzeichnis und den Ausgabemodus abfragen.

III. Will man dagegen weitere Parameter zur Ausgabe heranziehen, so ist ein INIT-File zu benutzen. Es ist unter Windows möglich, einem Programm mit einem File als Parameter zu starten, indem man das Icon dieses Files auf das Programm zieht und drauf fallenläßt. Das INIT-File wird ebenfalls die Parameter zur Ausgabe enthalten, d.h. mit den Befehlen im Init-File
FILES
PATHS
BOTH
wird man eine der 3 Ausgabemöglichkeiten auswählen können.

Es ist natürlichauch weiterhin möglich, LISTFILE.EXE mit einem INIT-File und/oder einem Ausgabe-Modus-Parameter zu starten, also z.B:

LISTFILE BEISPIEL.INI
LISTFILE /F
LISTFILE BEISPIEL.INI /B
LISTFILE /P BEISPIEL.INI
usw.

Anmerkung für Benutzung unter Windows: Startet man unter Windows eine EXE per Doppelklick, ist das Ausgangsverzeichnis immer das, in dem diese EXE liegt. Man kann dies beheben, indem man bei "Eigenschaften" dies ändert. Hier kann man auch Kommandozeilenparameter festlegen. (In diesem Fall wird dann von Windows eine Verknüpfung (LISTFILE.PIF) erstellt, die diese Daten enthält.)

Ich hoffe, damit sind erst einmal wieder alle Klarheiten beseitigt.
Und fülle bitte den Fragebogen aus - vorher fange ich nicht an.

von Nono » Do 22. Jan 2009, 08:34

Sorry, das ich mich so ungenau ausdrücke.
Aber ich kenne mich in diesem Thema echt nicht so gut aus.

Deine Frage ob lange oder kurze dateinamen hatte ich gelesen, da ich mich mit das aber nicht auskenne wußte ich nicht, dass es nur 8 sind, dachte es wären halt irgendwie ein paar mehr und dachte das würde schon reichen, weil ich war ja froh, dass du mir hilfst und wollte nicht soviele ansprüche stellen. Nun hab ich aber gesehen, dass mir diese kurzen namen echt nix bringen.

Wenn du das mit langen Dateinamen machen würdest, wäre ich dir sehr dankbar.

Zu deiner Frage, was ich genau will:
ich wollte eine liste aller meiner z.b. mp3´s erstellen unabhängig von ordnern, d.h. eine textdatei so wie:

erste.mp3
zweite.mp3
dritte.mp3
...

dann hatte ich versucht in einer anderen datei alle namen der Alben(ordner) die ich habe abzubilden und so hab ich versucht nur ordner in einer anderen textdatei auszugeben, soll so sein:

ordnera
unterordneraa
unterordnerab
ordnerb
ordnerba
ordnerbb
ordnerc
...

Alledings finde ich auch deine auflistung alla: Verzeichnisname1
Song1
Song2
Song3
Song4
Verzeichnisname2
Song5
Song6
Song7
Song8

auch nicht verkehrt.
Kann man den nicht eine auswahl am anfang des programm eine der 3varianten wählen?würde sowas gehen?den ich würd das programm gerne immer mal wieder für immer andere dinge nutzen, mal für meine musiksammlung, mal für meine bilder+fotos, mal für meine videos usw... und so ist je nach zweck eine bestimmte ausgabe vorteilhaft.

Da ich aber nicht möchte, dass du dir meinetwegen soviel arbeit machst, würde ich mich freuen wenn du das machst, wo du zeit für hast.
wünschen würde ich mir alle 3 möglichkeiten.
Reichen würde mir aber auch das 1.(dateiausgabe) und wünschen würde ich mir zudem das 2.(ordnerausgabe) und das 3.(beides) wäre nice to have...

Ich hoffe ich habe mich präzise ausgedrückt?

Nochmals vielen Dank für deine Hilfe.
Nono

von DOSferatu » Do 22. Jan 2009, 03:14

@nono:
Erstens: Das sind die richtigen DOS-Dateinamen. MS-DOS kann nur Dateinamen mit maximal 8 Zeichen Länge und maximal 3 Zeichen Erweiterung benutzen. Daher werden unter Windows - damit es noch zu FAT16-Namen kompatibel ist, intern die Namen alternativ im DOS-Format gespeichert.

Zweitens: MS-Windows hat diese "Langen Dateinamen", diese können (Namen und Erweiterung) zusammen maximal 260 Zeichen haben.

Drittens: Genau danach hatte ich gefragt - nämlich, ob ich es mit den langen Dateinamen ausgeben soll. (Denn, da es sich um Songs handelt, hatte ich mir so etwas nämlich schon gedacht.) Ich finde es immer etwas schade (und etwas beleidigend), wenn ich mich bereit erkläre, für jemanden etwas völlig umsonst zu machen und derjenige sich dafür nicht einmal die Mühe macht, meine Texte durchzulesen.

Viertens: Mein originaler Source hatte die Verzeichnisnamen auch ausgegeben - und das hatte ich extra auskommentiert, weil DU gesagt hattest, Du willst die Verzeichnisnamen nicht haben.

Also, folgendes:
1.) Ja, ich kann es so machen, daß die langen Dateinamen ausgegeben werden.

2.) Lange Dateinamen funktionieren nur unter Windows. Das heißt, damit die Umwandlung in die richtigen langen Dateinamen funktioniert, muß es im DOS-Fenster unter Windows gestartet werden - reines DOS kennt keine langen Dateinamen.

3.) Solltest Du die Dateien schon auf einen DOS-Rechner rüberkopiert haben (mit den kurzen Namen, also den 8.3 DOS-Namen), so ist da nichts mehr zu machen - es sei denn, man benutzt das im MP3-File enthaltene ID3-Tag. Da ich mich aber mit dem MP3-Format weder auskenne, noch mich nur wegen eines so kleinen - und vorraussichtlich nur einmal benutzten - Tools extra damit beschäftigen will, werde ich NICHT das mit dem ID3-Tag machen. Das heißt: Dateinamen->Lange Dateinamen JA (weil ich dafür schon Zeug programmiert hier habe), aber ID3-Tag auslesen NEIN (weil ich mich mit dem MP3-Framing nicht auskenne),
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Und jetzt noch eine FRAGE AN DICH :
Du erwähntest, daß Du die Verzeichnisnamen haben willst. Wo genau willst Du diese Verzeichnisnamen hin haben?

Soll es so sein:

Verzeichnisname1
Song1
Song2
Song3
Song4
Verzeichnisname2
Song5
Song6
Song7
Song8

Also so, daß immer der Verzeichnisname (vielleicht irgendwie gekennzeichnet) da steht und dann alle Songs, die da drin liegen? Oder willst Du die Verzeichnisnamen in eine extra Datei? Oder was?
Information: Die Verzeichnisnamen werden von dem Programm sowieso intern erfaßt und gelistet, weil sie gebraucht werden, um rekursiv in die Verzeichnisse zu wechseln. Im Originalprogramm wurden sie ausgegeben, ich habe diese Ausgabe lediglich auskommentiert. Das heißt, es ist kein Problem für mich die Verzeichnisnamen beliebig formatiert und wohin auch immer auszugeben. Also: Wo sollen sie stehen?

Am einfachsten für mich wäre es, wenn Du mal kurz ein kleines Stück Text machst, das vom Format her genau so aussieht, wie Du es haben willst, dann brauchen wir hier nicht herumrätseln, wie Du es meinst.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Achja: Um Deine Frage zu beantworten: Es ist in Borland Turbo Pascal 7.0 programmiert. Und wie ich mich kenne, ist da wahrscheinlich auch irgendwo ein geringfügiger Anteil Assembler drin.

von Nono » Mi 21. Jan 2009, 20:37

Ic hhab grad nochmal ausführlich getestet:

Das Porgramm ist Super, aber die Dateinamen müßten natürlich in voller länge geschrieben werden, weil momentan kommt da sowas raus:

OhT3
OøT3
OùT3
N36)NI~1.MP3
237)LE~1.MP3
238)US~1.MP3
239)HA~1.MP3
240)EV~1.MP3
241)RI~1.MP3

und das ist ja nicht so brauchbar.

Gibts da ne möglichkeit das zu ändern?

Danke,
Nono

von Nono » Mi 21. Jan 2009, 19:58

Top das ist genau das, was ich wollte.
Danke vielmals.

In welcher Spreche ist das geschrieben?

Ich hätte da gern noch was ;): Es müßte doch auch gehen, nur dir namen aller unterordner aufzulisten, hab das mal so gemacht: Dir /ad /b /s>Playlista.txt , das geht soweit, aber er schriebt den ganzen pfad und ich würde gern nur den jeweiligen ordnernamen haben. geht das mit dos, bzw. durch eine weitere kleine Modifikation deines Programms?

Danke und viele Grüße,
Nono

von Nono » Mi 21. Jan 2009, 08:35

Guten Morgen,

ich bin beeindruckt von dir bzw. diesem Forum, es kommt nicht oft vor, dass man so schnell so qualifizierte Hilfe bekommt! Herzlichen Dank dafür.
Bin momentan auf Arbeit, wenn ich heut abend nach hause komme werde ich es ausprobieren und dann nochmal schreiben.

Danke,
Nono

Nach oben