Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Jeweils erste Zeile von mehreren Textdateien in eine neue Datei schreiben?

Mitglied: batch0r

batch0r (Level 1) - Jetzt verbinden

31.07.2010 um 18:03 Uhr, 3024 Aufrufe, 7 Kommentare

Hallo, habe ein Problem

Hallo,

ich habe ein Verzeichnis mit über 1000 Texdateien. Es steht immer nur in der ersten Zeile etwas drin.
Wie kann ich nun die erste Zeile aller Textdateien hintereinander in eine gemeinsame Textdatei bringen?

Danke
Mitglied: bastla
31.07.2010 um 18:12 Uhr
Hallo batch0r und willkommen im Forum!

Etwa so (ungetestet):
01.
@echo off & setlocal 
02.
set "Ordner=D:\Der Ordner mit den 1000 Dateien" 
03.
set "Typ=txt" 
04.
set "Ergebnis=D:\Gemeinsame Textdatei.txt" 
05.
 
06.
del "%Ergebnis%" 2>nul 
07.
for %%i in ("%Ordner%\*.%Typ%") do call :ProcessFile "%%i" 
08.
goto :eof 
09.
 
10.
:ProcessFile 
11.
set /p Zeile=<%1 
12.
>>"%Ergebnis%" echo %Zeile% 
13.
goto :eof
Da Du Dich über die Inhalte der jeweiligen Zeilen ausschweigst, habe ich (als unverbesserlicher Optimist) angenommen, dass keine Sonderzeichen der Art "<|>&" enthalten sind ...

Grüße
bastla
Bitte warten ..
Mitglied: batch0r
31.07.2010 um 18:18 Uhr
Hallo,

danke für die Begrüßung und schnelle Antwort.
Habe deinen Vorschlag gleich einmal ausprobiert.
Er funktioniert - eingeschränkt

Der Befehl "mather" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "D" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Das System kann die angegebene Datei nicht finden.
Der Befehl "W" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "jahr" ist entweder falsch geschrieben oder
...

und dann bricht der Prozess irgendwann ab, aber es befindet sich etwas in der Ziel-Textdatei.

In den Textdateien können alle möglichen Zeichen vorkommen. In der Regel sind dies allerdings nur normale Buchstaben, Zahlen, "Doppelpunkt", Klammeraffe (@), "Punkt". Aber Sonderzeichen wie $ oder ! möchte ich nicht ausschließen.
Bitte warten ..
Mitglied: bastla
31.07.2010 um 18:27 Uhr
Hallo batch0r!

Die von Dir genannten Sonderzeichen sind eigentlich unproblematisch - Anführungszeichen in ungerader Anzahl wären allerdings nicht günstig ...

Um genauer nachvollziehen zu können, was der Batch macht (und wo es klemmt), ändere das "echo off" in Zeile 1 auf "echo on" und starte den Batch direkt von der Kommandozeile. Wenn Du vorweg noch im CMD-Fenster das Systemmenü (in der Titelleiste links) öffnest, dort "Eigenschaften" wählst und im Register "Layout" die "Höhe" der "Fensterpuffergröße" auf 9999 setzt, kannst Du in weiterer Folge entsprechend weit nach oben scrollen, um die Ausgaben in Ruhe anzusehen ...

Grüße
bastla
Bitte warten ..
Mitglied: batch0r
31.07.2010 um 18:34 Uhr
Hallo,

bei den Dateien die bearbeitet wurden, hat er wohl wegen folgender Zeichen rumgemeckert:

&
<
/
|

Nach dem | ist der Prozess abgebrochen.
Bitte warten ..
Mitglied: rubberman
31.07.2010 um 18:36 Uhr
Hallo batch0r und bastla.

Dieses Verhalten ist typisch bei enthaltenen Ampersands (&).

@bastla
Deinen Optimismus in allen Ehren, bei solchen Vorhaben teile ich diesen nicht und gehe lieber gleich auf mehr Sicherheit.
:ProcessFile würde bei mir so aussehen
01.
:ProcessFile 
02.
set /p "Zeile="<%1 
03.
set "Zeile=%Zeile:^=^^%" 
04.
set "Zeile=%Zeile:&=^&%" 
05.
set "Zeile=%Zeile:<=^<%" 
06.
set "Zeile=%Zeile:>=^>%" 
07.
set "Zeile=%Zeile:|=^|%" 
08.
>>"%Ergebnis%" echo %Zeile% 
09.
goto :eof
Grüße
rubberman
Bitte warten ..
Mitglied: bastla
31.07.2010 um 18:39 Uhr
@rubberman
Die Hoffnung (auch auf eine einigermaßen vollständige Beschreibung eines "Problems") stirbt zuletzt ...

Mit Deiner Anpassung sollte es dann aber tatsächlich klappen ...

... ansonsten würde sich schon fast ein VBS der Art
01.
Ordner = "D:\Der Ordner mit den 1000 Dateien" 
02.
Typ = "txt" 
03.
Ergebnis = "D:\Gemeinsame Textdatei.txt" 
04.
 
05.
Typ = LCase(Typ) 'nur zur Sicherheit, damit der Vergleich nachher nicht an Groß-/Kleinschreibung scheitert 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Set Erg = fso.CreateTextFile(Ergebnis) 
08.
 
09.
For Each File In fso.GetFolder(Ordner).Files 'alle Dateien des Ordners durchgehen und ... 
10.
    If LCase(fso.GetExtensionName(File.Name)) = Typ Then '... jene mit dem passenden Typ bearbeiten, ... 
11.
        If LCase(Ergebnis) <> LCase(File.Path) Then '... außer, es handelt sich um die Ergebnisdatei 
12.
            Erg.WriteLine File.OpenAsTextStream.ReadLine 'erste Zeile lesen und schreiben 
13.
        End If 
14.
    End If 
15.
Next 
16.
Erg.Close 
17.
WScript.Echo "Fertig."
lohnen (da würden dann, im Gegensatz zum Batch in der derzeitigen Form, auch Leerzeilen nicht unter den Tisch fallen) ...

Grüße
bastla
Bitte warten ..
Mitglied: batch0r
31.07.2010 um 18:42 Uhr
Danke, jetzt funktioniert dies.
Danke euch beiden!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Bestimmte Zeile aus mehreren Dateien in eine neue Datei schreiben

gelöst Frage von Oggy76Batch & Shell5 Kommentare

Hallo zusammen, meine Kenntnisse in Sachen batch/shell sind ehr auf Anfängerniveau zu sehen. Grund -basics im CMD-Prompt sind vorhanden, ...

Batch & Shell

Erstellungsdatum vor jede Zeile einer Textdatei schreiben

gelöst Frage von freakonaleashBatch & Shell5 Kommentare

Hallo zusammen, ich habe einen Ordner mit ganz vielen Textdateien. Ich bräuchte eine Batch, die in jede Datei vor ...

Batch & Shell

Batch: Mehrere .txt Dateien zu einer zusammenfügen, dabei jeweils die erste Zeile löschen

gelöst Frage von v.piepmatzBatch & Shell5 Kommentare

Hallo, ich bin leider kompletter Neueinsteiger bzgl. batch-Dateien, suche jetzt aber eine Möglichkeit mehrere .txt Dateien, welche in einem ...

Ubuntu

Nach Zeilen aus der ersten Textdatei in der zweiten Textdatei suchen und diese dort entfernen

gelöst Frage von takitanoUbuntu3 Kommentare

Frohes Neues an alle! Ich habe 2 Textdateien. Die erste Textdatei beinhaltet Suchbegriffe, die ich in der zweiten Datei ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 21 MinutenHumor (lol)

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 12 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 13 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 16 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...