2010-08-05 8 views
34

Ich habe 50 bis 60 Dateien in einem Verzeichnis, das ich brauche, in einer einzigen Datei auf einer regelmäßigen Basis verketten.benötigen viele Dateien in einem Verzeichnis kombinieren

Ich dachte über die Verwendung von Notepad ++ denke, es gab wahrscheinlich ein Plug-in, das helfen würde, aber nicht in der Lage, eins zu finden.

Irgendwelche anderen Gedanken?

+0

mit Windows oder Linux OS Sie? Wenn Windows, dann ist PowerShell installiert? –

+0

Wenn diese Frage nicht geschlossen werden soll, bearbeiten Sie sie besser, um zu fragen "Wie kann ich ein Programm schreiben, um Dateien in einem geplanten Intervall zusammenzuführen". Wir können Ihnen leicht dabei helfen, eine kleine App zu schreiben (Batch, VB-Skript, .net, etc) ... aber Sie müssen Ihre Frage auf http://superuser.com verschieben, wenn Sie irgendwelche Empfehlungen haben möchten Apps von Drittanbietern verwenden, um die Arbeit für Sie zu erledigen. –

+0

Verketten von Dateien in eine, die lesbar ist, oder nur für Archivierungszwecke? Ich persönlich routiniere routinemäßig eine große Anzahl von JPG-Bildern in einer einzigen ZIP-Datei, ohne Komprimierung, um den Transport und die Langzeitspeicherung zu erleichtern. Aber Sie sollten angeben, welche Art von Dateien, welches Betriebssystem, und einige weitere Details geben, wenn Sie Programmierhilfe benötigen. – JYelton

Antwort

70

Angenommen, dies sind Textdateien (da Sie Notepad ++ verwenden) und dass Sie sich in Windows befinden, könnten Sie ein einfaches Stapelscript erstellen, um sie miteinander zu verketten.

Zum Beispiel in das Verzeichnis mit den alle Textdateien, führen Sie die folgenden Schritte aus:

for %f in (*.txt) do type "%f" >> combined.txt 

Diese fusionieren werden alle passenden Dateien * .txt in eine Datei namens combined.txt.

Für weitere Informationen:

http://www.howtogeek.com/howto/keyboard-ninja/keyboard-ninja-concatenate-multiple-text-files-in-windows/

+0

Beachten Sie, dass ich dies wahrscheinlich nicht für sehr große oder sehr viele Dateien tun würde. – JYelton

+1

Das ist großartig, wenn Sie eine Menge Stücklisten (Byte Order Marks) in die Datei einfügen wollen (wahrscheinlich nicht!) – Darragh

+0

Das hängt ganz von der Art und Codierung der Dateien ab, die verbunden werden. BOMs sind in UTF8 optional, und obwohl einige Windows-Anwendungen dafür bekannt sind, diese drei Bytes am Anfang einer Datei hinzuzufügen, funktioniert Windows 7 Notepad nicht. Wenn sie jedoch vorhanden sind und ein Problem verursachen, gibt es hier eine Beschreibung: http://www.heikniemi.net/hardcoded/2009/12/utf-8-preamble-is-a-problem-when-you-concatenate- files/ – JYelton

59

Verwenden Sie den Windows-Befehl "Kopieren".

C:\Users\dan>help copy 
    Copies one or more files to another location. 

    COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B] 
     [+ source [/A | /B] [+ ...]] [destination [/A | /B]] 

     source  Specifies the file or files to be copied. 
     /A   Indicates an ASCII text file. 
     /B   Indicates a binary file. 
     /D   Allow the destination file to be created decrypted 
     destination Specifies the directory and/or filename for the new file(s). 
     /V   Verifies that new files are written correctly. 
     /N   Uses short filename, if available, when copying a file with 
        a non-8dot3 name. 
     /Y   Suppresses prompting to confirm you want to overwrite an 
        existing destination file. 
     /-Y   Causes prompting to confirm you want to overwrite an 
        existing destination file. 
     /Z   Copies networked files in restartable mode. 
     /L   If the source is a symbolic link, copy the link to the 
        target 
        instead of the actual file the source link points to. 

    The switch /Y may be preset in the COPYCMD environment variable. 
    This may be overridden with /-Y on the command line. Default is 
    to prompt on overwrites unless COPY command is being executed from 
    within a batch script. 

    **To append files, specify a single file for destination, but 
    multiple files for source (using wildcards or file1+file2+file3 
    format).** 

So in Ihrem Fall:

copy *.txt destination.txt

Werden alle TXT-Dateien in alphabetischer Reihenfolge in destination.txt

Danke der Nachfrage, verketten lernte ich etwas Neues!

+2

Kein PowerShell-Skript erforderlich. Auch etwas Neues gelernt. Vielen Dank. –

+3

Sie können auch Reihenfolge angeben, nach dieser Hilfe Beschreibung: kopieren file1.txt + file2.txt + file3.txt destination.txt – dwerner

+1

dies (identische Antwort ?!) wird (auch) Metzger z. utf8-Codierung in nicht akzeptable ANSI-Ersatz für viele Zeichen. –

1

Sie Powershell-Skript wie diese

$sb = new-object System.Text.StringBuilder 

foreach ($file in Get-ChildItem -path 'C:\temp\xx\') { 
    $content = Get-Content -Path $file.fullname 
    $sb.Append($content) 
} 
Out-File -FilePath 'C:\temp\xx\c.txt' -InputObject $sb.toString() 
+0

Funktionierte nicht für mich, musste es in so etwas ändern (mit hinzugefügtem Zeilenumbruch nach jeder Datei): 'foreach ($ Datei in Get-ChildItem -Pfad 'C: \ temp \ EXEMPLES_TEST') { $ content = Get -Content -Path $ file.fullname $ content = $ content + [Umgebung] :: NewLine $ content | Out-File 'C: \ temp \ EXEMPLES_TEST \ combined.txt' -append } ' –

0

Es ist ein bequemes Drittanbieter-Tool namens FileMenu Tools, das gibt mehrere Rechtsklick verwenden könnten Werkzeuge als Windows Explorer Erweiterung.

Einer von ihnen ist Split Datei/Parts Join, die genau tut und rückgängig macht, was Sie suchen.

es bei http://www.lopesoft.com/en/filemenutools prüfen. Natürlich ist es nur Windows, da Unix-Umgebungen bereits viele Tools dafür haben.

11
copy *.txt all.txt 

Dadurch werden alle Textdateien des Ordners zu einer Textdatei all.txt

verketten Wenn Sie eine andere Art von Dateien, wie SQL-Dateien

copy *.sql all.sql 
+2

Dies wird Metzger z.B. utf8-Codierung in nicht akzeptable ANSI-Ersatz für viele Zeichen. –

0

Ich weiß, das ist ein alter Post, aber ich habe ihn gefunden und dann jemanden gefunden, der Total Mail Converter vorgeschlagen hat. Ich konnte meinen Ordner mit 2k .msg Dateien in .txt konvertieren. Sie können auch in PDF und andere gängige Formate konvertieren.

Es ist ein großes Werkzeug, das ich froh bin jemand vorgeschlagen, wie es mir mehrere Tage sparen.

FYI - Mein Projekt ist die Kombination der.msg Dateien in einer Textdatei, so dass ich ein Skript ausführen kann, um bestimmte Informationen aus den Dateien zu extrahieren (zB: E-Mail und Links). Anstelle von 2k-Dateien kann ich mit einem arbeiten.

0

In Windows verwende ich einen einfachen Befehl in einer Batch-Datei und ich verwende eine geplante Aufgabe, um alle Informationen in nur einer Datei zu halten. Achten Sie darauf, einen anderen Pfad zur Ergebnisdatei zu wählen, oder Sie werden doppelte Daten haben.

Typ PathToOriginalFiles \ *. Erweiterung > AnotherPathToResultFile \ NameOfTheResultFile.Extension

Wenn Sie viele csv-Dateien müssen sich registrieren, ist eine gute Sache zu tun, nur eine Datei in den Header haben, mit einem Name wie 0header.csv oder anderer Name, so dass es immer die erste Datei in der Liste sein wird, und stellen Sie sicher, alle anderen CSV-Dateien zu programmieren, um keine Kopfzeile zu enthalten.

4

Ja, ein Plugin zur Verfügung Namen "kombinieren" für Notepad ++. Link: >>Combine Plugin for Notepad++

Sie können es über den Plugin-Manager installieren. Zusätzliches Plus dieses Plugins ist: "Sie können die Reihenfolge der Dateien beim Zusammenführen beibehalten, es wird entsprechend der Reihenfolge der geöffneten Dateien geöffnet (siehe Reiter)".

0

benutzte ich dieses Skript auf Windows Powershell:

ForEach ($f in get-ChildItem *.sql) { type "$f" >> all.sql } 
Verwandte Themen