praktikantin
Goto Top

Simples Programm dass mehrere Text Dokumente in einem bindet

Hallo zusammen,

ich brauche ein ganz einfaches Programm dass mehrere Text Dateien in einem Ordner (zum beispiel C:\Text) in ein neues Text Dokument schreibt im Order C:\Text\Final. Die Text Dateien sind ganz einfach strukturiert. Ich will diese Dateien in einer Datenbank importieren und es wäre viel einfacher eine große Datei zu importieren als 100 kleine (je 1 Kb). Vielen dank im voraus für jede Hilfe.

Viele Grüsse
Julia

Content-ID: 117151

Url: https://administrator.de/contentid/117151

Ausgedruckt am: 25.11.2024 um 23:11 Uhr

bastla
bastla 29.05.2009 um 21:43:28 Uhr
Goto Top
Hallo Praktikantin!

Als Batch oder direkt an der Kommandozeile:
type C:\Text\*.txt >C:\Text\Final\Gesamt.txt
Grüße
bastla
monoffel
monoffel 29.05.2009 um 22:12:03 Uhr
Goto Top
Das müsste ganz einfach mit Batch gehen.
Erstma erstell eine leere Textdatei, dann schreib rein:
@echo off
if not exist "C:\Text\" md "C:\Text\"  
if not exist "C:\Text\Final\" md "C:\Text\Final\"  
copy "C:\Text\*.*" "C:\Text\Final\Alles.txt"  
Das ganze dann Speichern unter -> meinprog.bat
Wichtig ist die endung .bat anstatt .txt, damit das Programm sich ausführen lässt.

... So wirklich gut ist das noch nicht, weil er keine neuen zeilen nach jeder datei macht.
Du müsstest also in am ende jeder Datei eine neue Zeile einfügen (Enter), falls dies noch nicht der fall ist.

Aber mit einem FOR-Befehl würde das irgendwie gehen.
Du kannst ja hier im Bereich Batch & Shell oder halt mit google dazu was suchen.

:Edit: bin irgendwie abgeschweift und hab spät abgeschickt, aber egal
bastla
bastla 29.05.2009 um 22:21:36 Uhr
Goto Top
@monoffel
Kurze Anmerkung zu den beiden "md"-Zeilen: Es genügt die zweite davon, da bei Bedarf automatisch die höher liegenden Ordnerebenen erstellt werden - zu Testzwecken könntest Du daher, falls es noch keinen Ordner "Test1" gibt, zB mit
md C:\Test1\Test2\Test3\Test4
alle "Test"-Ordner erstellen.

Grüße
bastla
monoffel
monoffel 29.05.2009 um 22:42:34 Uhr
Goto Top
Ja irgendwie schon.
Theorethisch könnten die Beiden Ordner, aber auch in unterschiedlichen Verzeichenissen sein, weil das is ja nur ein Beispiel.
So wäre es auch noch einfacher.
@echo off
set "eingabeordner=C:\Text\"  
set "ausgabeordner=C:\Text\Final\"  
if not exist "%eingabeordner%" md "%eingabeordner%"  
if not exist "%ausgabeordner%" md "%ausgabeordner%"  
copy "%eingabeordner%\*.*" "%ausgabeordner%\Alles.txt"  
bastla
bastla 29.05.2009 um 22:49:37 Uhr
Goto Top
@monoffel
War ja auch nur als allgemeiner Hinweis gedacht - wenn es allerdings verschiedene Verzeichnisse wären, hätte es keinen Sinn, den Eingabeordner in Zeile 4 zu erstellen und dann in Zeile 6 aus dem eben erst erstellten Ordner Dateien kopieren zu wollen ...

... hinsichtlich der Prüfung des Ausgabeordners hast Du allerdings Recht. face-smile

Grüße
bastla
Praktikantin
Praktikantin 30.05.2009 um 00:35:21 Uhr
Goto Top
Hallo alle zusammen!!!!

Das ist wirklich eine seeeehr große Hilfe für mich!!! Irgendwie bin ich mit Batch Programmen\Dateien vertraut!!! Ich wäre nie dazu gekommen dass es so einfach ist... Ich dachte ich muss ein kompliziertes VB Script schreiben.... Vielen, vielen dank für die blitzschnelle Hilfe!!!!! Morgen werde ich meine erste Batch Datei erstellen und alles testen!!! Ich melde mich dann wieder!!!!

Und noch einmal vielen vielen dank!!!!

PS. Kennt jemand eine Seite oder ein Tutorial damit ich etwas mehr über Batch erfahren kann? Ist recht simpel und sehr hilfreich!!!! Danke face-smile
primusvs
primusvs 30.05.2009 um 09:43:45 Uhr
Goto Top
Hallo Praktikantin,

kuckst du hier.

http://de.wikibooks.org/wiki/Batch-Programmierung:_WebLinks

Gruß

primusvs
bastla
bastla 30.05.2009 um 10:07:42 Uhr
Goto Top
Hallo Praktikantin!
Ich dachte ich muss ein kompliziertes VB Script schreiben....
Naja, sogar mit Prüfung des Zielordners dann nicht sooo kompliziert face-wink:
Quelle = "C:\Test"  
Typ = "txt"  
Ziel = "C:\Test\Final"  
Sammeldatei = "Gesamt.txt"  

Set fso = CreateObject("Scripting.FileSystemObject")  
If Not fso.FolderExists(Ziel) Then
    WScript.Echo "Der Zielordner existiert nicht!"  
    WScript.Quit(1)
End If

Set Sammel = fso.OpenTextFile(Ziel & "\" & Sammeldatei, 2, True)  
For Each Datei In fso.GetFolder(Quelle).Files
    If LCase(fso.GetExtensionName(Datei.Name)) = LCase(Typ) Then
        Sammel.Write Datei.OpenAsTextStream.ReadAll
    End If
Next
Noch eine Anmerkung: Je nachdem, ob die einzelnen Textdateien am Ende der letzten Zeile eine Zeilenschaltung enthalten, müsste ev anstelle von "Write" mit "WriteLine" geschrieben werden.

Grüße
bastla
Praktikantin
Praktikantin 30.05.2009 um 10:18:42 Uhr
Goto Top
Danke Bastla,

Das VB Programm ist tatsächlich ganz einfach!!! Natürlich für Dich nur für mich wäre es viel schwerer. Vielen dank!!!! Es hilft mir wirklich weiter!!!!

primusvs, danke für die Links. Habe schon ein paar durchgelesen.

Praktikantin face-smile