Dateien in Verzeichnis und Unterverzeichnis auslesen

Hier dürfen auch unregistrierte Besucher posten.
nono

Dateien in Verzeichnis und Unterverzeichnis auslesen

Beitrag von nono »

Hallo,

ich möchter gerne alle dateien eines ordners (inklusive unterordner) in ein Textdokument schreiben. Aber es sollen nur die dateinamen und nicht der koplette pfad in die datei geschrieben werden.

Bisher hab ich zwar rausgefunden, wie man das macht und das klappt auch, aber er schreibt bisher immer den kompletten pfad rein.

Kann mri jemand helfen?

Danke
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

Erste Anmerkung: Ich befürchte, daß dieses Forum mit einer Unterart von C (PHP etc) gemacht wurde, was eigentlich nicht schlimm ist. Ich hoffe nur, daß die Backslashes (\) trotzdem angezeigt werden. In einem DOS-Forum ist so etwas eventuell wichtig...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Erst einmal: Schau Dir mal die Hilfe zum Befehl DIR an!
mit HELP DIR

wenn man

DIR C:\FILES\BLA /s /b

macht, zeigt er alle Files in C:\FILES\BLA mit Unterverzeichnissen an, allerdings mit vollem Pfad. Setzt man hinter diese Zeile noch ein >BEISPIEL.TXT, also

DIR C:\FILES\BLA /s /b >BEISPIEL.TXT

so wird das alles in ein File namens BEISPIEL.TXT geschrieben. Aber - wie schon bemerkt - es wird zu jedem File sein voller Pfad reingeschrieben.

Nun gäbe es eine Möglichkeit: Ich schreibe ein kleines Programm, das nichts anderes tut als jede Zeile dieses Files (also in dem Fall BEISPIEL.TXT) auszulesen und nur das wieder zurückzuschreiben, was in jeder Zeile nach dem \ (Backslash) steht - also den Filenamen ohne den Pfad.
Das wäre die einfachste Methode. Kleiner Nachteil daran ist natürlich, daß auf diese Art Verzeichnisse wie Files aussehen, d.h. auch die Verzeichnisse wären in dieser Liste. Abhilfe schafft das:

DIR C:\FILES\BLA /s /b /a:-d >BEISPIEL.TXT

Da werden dann keine Verzeichnisse (Directories) gelistet. Achja. Wenn man auch Systemdateien, versteckte Dateien und ReadOnly haben will:

DIR C:\FILES\BLA /s /b /a:-d /a:shr >BEISPIEL.TXT

Naja, wie gesagt. Und da könnte man dann immer alles bis zum letzten \ der Zeile abschneiden und hätte seine Files. Achja. Die Option /l bewirkt, daß in Kleinbuchstaben gewandelt wird, falls man's braucht...

Also, das wär erstmal das. Gibt noch n paar mehr Optionen bei DIR. Wie gesagt, mach mal
HELP DIR
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Mir fiel aber noch eine andere ein - die hat viel mehr Möglichkeiten, da müßte aus einem Programm, das eigentlich einen anderen Zweck hatte, den File-Listen-Teil rauskratzen und daraus ein eigenes File-Lister Tool bauen.

Erklärung folgt. Ist etwas länger. Und wenn Dir die obengenannte Variante reicht, brauchst Du diesen komischen Text hier nicht durchlesen.

Also: Ich habe vor einer Weile mal ein Programm angefangen, das genau das macht (und einige andere Dinge). Es ist eigentlich dazu gedacht, Files zwischen verschiedenen Verzeichnissen - genauer gesagt aber zwischen verschiedenen Rechnern - zu synchronisieren. Es gibt so eine Synchronisier-Funktion im NC (Norton Commander) mit Strg+F8. Und man kann es da auch für mehrere Rechner tun (z.B. über Nullmodemkabel). Aber irgendwas daran war mir nicht komfortabel genug, z.B. kann der nur so ca. 1300 Dateien listen und so und man kann die "Auswahl", welche synchronisiert werden sollen und welche nicht, nicht genau genug einstellen. (Außerdem spinnt der manchmal bei manchen Dateinamen-Erweiterungen.) ... Aber egal!

Jedenfalls listet mein Programm alle Files in einem Verzeichnis und sämtlicher seiner Unterverzeichnisse - man kann das auch für mehrere Verzeichnisse tun.
Es funktioniert so, daß man es in einem (menschenlesbaren) Init-File angeben kann, von welchem Verzeichnis aus gelesen werden soll. Man kann auch verschiedene Files "maskieren", d.h. z.B. welche Files gelistet werden sollen und welche nicht. Da kann man die minimale und maximale Größe, das minimale und maximale Filedatum und eben auch Filenamen angeben. Wenn man z.B. schreibt
- A*.BMP werden alle Files NICHT gelistet, die mit A beginnen und BMP als Erweiterung haben.
Schreibt man danach:
+ ABC*.BMP werden aber alle BMP-Files DOCH gelistet, wenn sie mit ABC beginnen.
(Also so, daß man z.B. zuerst größere Mengen ausschließen kann, aber Teilmengen dieser größeren Mengen doch zulassen will. Auf die Art muß man nicht alle, die man NICHT haben will, umständlich ausschließen...)
mit SDIR stellt man ein, von welchem Verzeichnis angefangen eine Liste erstellt werden soll, z.B.:

SDIR C:\SPIELE\ARCADE

Es erstellt dann ein Textfile, das momentan so aussieht:

----snip----
*
C:\SPIELE\ARCADE
\
FILE.BLA
ANDERES.TXT
\SPIEL1
DATA.DAT
SPIEL1.EXE
----snap----

Die Verzeichnisstruktur auf dem Rechner wäre dann so:

C:
.|__ <SPIELE>
....|__ <ARCADE>
.......|__ file.bla
.......|__ anderes.txt
.......|__ <SPIEL1>
............|__ data.dat
............|__ spiel1.exe

Es funktioniert also so, daß man es quasi parsen könnte.
Immer, wenn ein Stern * erscheint, wird in der nächsten Zeile ein neues definiertes "Oberverzeichnis" (also immer wenn man einen neuen SDIR Befehl benutzt hat) genannt. Definiert man nur EIN solches Oberverzeichnis, wird dies eben nur am Anfang genannt. Also Zeile mit Stern, Zeile mit Oberverzeichnis.
ACHTUNG! Damit man das Programm von jedem Punkt aus starten kann, und weil es mehrere solcher SDIR geben können soll, muß man hier im INI-File immer den GANZEN Pfad des Oberverzeichnisses angeben. Ich könnte es aber auch noch so ändern, daß ein SDIR ohne Parameter automatisch den Pfad als Ausgangspfad benutzt, in dem man sich gerade befindet.
Danach kommen die Verzeichnisse und Files. Verzeichnisse werden daran erkannt, daß sie immer mit einem \ eingeleitet werden. Hier ist dann das zuletzt genannte "Oberverzeichnis" DAVOR anzufügen, um den gesamten Verzeichnispfad zu erhalten. Ein einzelner \ bedeutet also, daß hier Files folgen, die direkt im genannten Verzeichnis liegen.
Danach folgen immer die Files, die zu DIESEM Verzeichnis gehören. Wird ein anderes Verzeichnis genannt (also wieder eine Zeile, die mit \ beginnt), so gehören die darauffolgenden Files zu eben DIESEM Verzeichnis.
Beim Parsen würde man so vorgehen, daß man immer zwei Stringvariablen hat, eine, die den Hauptpfad enthält, eine die den Unterpfad enthält. Und bei allen Files kann man ihre genaue Position (ihren Suchpfad) feststellen, indem man Hauptpfad+Unterpfad+Filename benutzt (also die Strings zusammenkettet).
Achtung! Bisher funktioniert das nur für das DOS (8.3) Filesystem. Ich könnte es bei Bedarf so erweitern, daß es, wenn es unter Windows läuft, die "langen" Datei- und Verzeichnisnamen ermittelt - ich habe mir schon mal spezielle Unterprogramme geschrieben, die ich dann nur noch einbauen müßte.

Anmerkung: Das Format des Files, das die File- und Verzeichnisnamen enthält, könnte ich auch noch modifizieren. Ich könnte auch die Verzeichnisnamen weglassen oder verkürzen oder was auch immer. (Da ich ja sowieso die Strings immer habe, kann ich damit anstellen, was ich will.)

Anmerkung: Weil das Programm eigentlich für andere Zwecke gedacht war, speichert es die Filenamen in einem speziellen für Filenamen gedachten gepackten (selbstentwickelten) Format im Speicher - mit mehrfach indirekten Verbindungen etc - und kann daher wahnsinnig viele Files listen.

Anmerkung: Der Sinn dieses Programm besteht darin, daß er die gelisteten Files dann - genau wie der NC - mit dem anderen Rechner synchronisiert, ABER es packt sowohl die Liste als auch später die zu synchronisierenden Files (mit einem externen Packer - einstellbar, welcher) in ein einzelnes Packfile (z.B. SD.ZIP) und schickt das gepackte Ding über die serielle Schnittstelle. Weil die serielle Schnittstelle eben nicht die schnellste ist, erschien es mir sinnvoll, das Ganze zu packen, schicken, entpacken. Man gibt nur zu Anfang im Init-File alles an und der ganze Prozeß läuft automatisch ab, sobald man auf beiden Rechnern das File gestartet hat. (Man muß dazu angeben, welcher Rechner Master und welcher Slave ist...)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SOLLTEST Du also wirklich keine andere Möglichkeit finden (und nur dann!) könnte ich da noch sozusagen eine reduzierte Version dieses Programms schreiben, die nur die entsprechenden Dinge tut, die Du willst (also Files listen).

Frage: Willst Du es in ein Programm einbauen oder brauchst Du es einfach nur als File?
Gast

Beitrag von Gast »

Hallo,
vielen Dank für die qualifizierte und umfangreiche antwort.

Dei genannten Varianten des Dir befehls hatte ich bereits probiert und war jetzt auch an dem Punkt angelangt zu überlgen noch ein Programm zu basteln, was dei erstellte .txt foramtiert.

Dachte aber ihr habt vllt. noch ne andere Idee...

Das mit dem Tool, was du mal gebaut hast klingt interessant!

Ich möchte das nicht in ein Programm einbauen oder so, ich habe viel musik, programme usw. auf einer festplatte und wollte u.a. eine aulistung aller musikdateien erstellen und daher fing ich an mit dem dir-befehl zu spielen, stoß dann an seine grenzen und suchte dann dieses forum auf :) ...

das prog soll nix anderes tuen als alle dateien eines ordners inklusive unterordner in eine datei zu schreiben.

Wenn du mir da mit einer modofikation deines Programms helfen könntest wäre ich dir sehr dankbar.

Vielen Dank für deine Mühe
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

Ja, also, dann noch einmal die Frage:
Nur eine Liste der Dateinamen - oder sollen auch "lange Dateinamen" (LFN) unterstützt werden? (Wäre natürlich nur sinnvoll, wenn es unter Windows laufen soll.)
Ich frage nur, weil manchmal bei Musiken (z.B. MP3) der Dateiname dem Musiktitel entspricht. (Theoretisch könnte man natürlich auch versuchen, den ID3-Tag aus dem File zu ermitteln, aber dazu müßte ich mich erst mit dem MP3-Format beschäftigen, wäre etwas Aufwand und würde auch etwas dauern.)

Also ich baue das erst einmal normal.
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

@nono:
So. Ist fertig. Es heißt LISTFILE.
Zu finden dort: http://www.imperial-games.de/html/dosa2.htm

Hoffe, es ist das, was DU wolltest. Wenn nicht, melde Dich nochmal.
Nono

Beitrag von Nono »

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
Nono

Beitrag von Nono »

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
Nono

Beitrag von Nono »

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
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

@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.
Nono

Beitrag von Nono »

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
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

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.
Nono

Beitrag von Nono »

;) 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
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

@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.
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Beitrag von DOSferatu »

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.
Nono

Beitrag von Nono »

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
Antworten