Zeilen in einer txt löschen - mit Batch
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
bezug
code
compiler
dank
datei
frage
haus
http
installieren
kleines problem
messung
schauen
sekunde
server
sprache
string
taste
testzweck
url
zeile
-
Moin moin!
Ich habe folgendes Problem:
Mir liegen mehrere Dateien aus Messungen als txt vor. Diese beinhalten teilweise über 500.000 Zeilen.
Allerdings hat das Thermoelement alle paar Milisekunden gemessen, so dass ich für eine Sekunde immer 15 Zeilen vorliegen habe. Diese Präzision ist aber gar nicht notwendig.
2 Zeilen für eine Sekunde würde mir völlig ausreichen.
Deshalb dachte ich mir, eine kleine Batch-Datei zu schreiben, mit der ich flexibel eine gewünschte Zahl an Zeilen einfach herauslösche, unabhängig davon, wie viele Zeilen die Datei enthält (variiert ja je nach Messdauer).
Die ersten 11 Zeilen müssen jedoch unangetastet bleiben, da dort die Einleitenden Kenndaten und Bezeichnungen stehen.
Kann mir da jemand weiterhelfen?
Oder gäbe es in einer andere Sprache eine leichtere Lösung?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Am einfachsten wäre es, jede Zeile einzeln einzulesen und die gewünschten Zeilen dann in einer weiteren Datei zu speichern.
-
Stimmt, eine gute idee :)
Könntest du einen kleinen Beispielcode reinsetzen?
Mit Batch kenn ich mich leider nicht aus - bzw. vergesse ich ständig die Syntax usw. -
karikato schrieb:
Es soll zwar Leute geben die mit Batch einen Editor schreiben können, ich empfehle aber für dein Problem AutoIt. Das Skript würde z.B. so aussehen:
Oder gäbe es in einer andere Sprache eine leichtere Lösung?
Es kann aus AutoIt heraus gestartet werden oder auch zu einer ausführbaren EXE compiliert werden.#include <array.au3> #include <File.au3> Global $sMessage = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken." Global $sFiles = FileOpenDialog($sMessage, @ScriptDir, "Messungen auswählen (*.txt)", 1 + 4) If @error Then MsgBox(4096, "", "Keine Datei(en) ausgewählt") Else $aFiles = StringSplit($sFiles, "|") ;_ArrayDisplay($aFiles) ;zu Testzwecken zeigt die Dateiauswahl an If $aFiles[0] = 1 Then _Convert($aFiles[1]) Else For $i = 2 To $aFiles[0] _Convert($aFiles[1] & "\" & $aFiles[$i]) Next EndIf EndIf Func _Convert($sFile) Local $aMess _FileReadToArray($sFile, $aMess) For $i = $aMess[0] to 12 step -1 If Mod(($i + 3), 5) <> 0 Then _ArrayDelete($aMess, $i) ;1., 6., 11. usw. Messungen beleiben erhalten Next _FileWriteFromArray($sFile & ".new",$aMess,1) ;Element 0 enthält Anzahl der Zeilen deshalb nicht zurückschreiben ;_ArrayDisplay($aMess) ;zu Testzwecken zeigt die Zeilen an EndFunc ;==>_Convert
Edit: Skript noch einmal geändert (ist gleiche Version wie auf DL-Server)
Edit2:kigollogik schrieb:
Deshalb fragt man ja in einem öffentlichen Forum, wenn du nicht zur Problemlösung beitragen kannst willst, sollteste du auch das Spamen (oder nennt man dies Guldensammeln) unterlassen.
Eigeninitiative?
karikato schrieb:
Mit Batch kenn ich mich leider nicht aus
Dann wird es schwer ^^
Beitrag zuletzt geändert: 21.10.2011 11:01:19 von harrybotter -
Danke für so eine fertige Lösung! :)
Leider habe ich noch ein kleines Problem in Bezug auf solche Software.
Autolt kann ich nicht einfach so auf meinem Arbeitsrechner installieren und zu Hause hatte ich keine Zeit dazu.
Aber eine Frage: ist das Java Script? Könnte ich es also mit einem ganz normalen Javascript-Compiler kompilieren?
Habe mich leider noch nie mit Javascript beschäftigt und erkenne es daher nicht direkt.
Dann könnte ich nämlich schauen, ob es möglich ist einen solchen Compiler zu installieren. -
karikato schrieb:
nein, es ist kein Javskript. Falls es nur die Zeit ist AutoIt ist relativ klein und dementsprechend schnell installiert. Falls es an den Anweisungen der IT-Abteilung liegt kannst du es natürlich nicht installieren.
Danke für so eine fertige Lösung! :)
Leider habe ich noch ein kleines Problem in Bezug auf solche Software.
Autolt kann ich nicht einfach so auf meinem Arbeitsrechner installieren und zu Hause hatte ich keine Zeit dazu.
Aber eine Frage: ist das Java Script? Könnte ich es also mit einem ganz normalen Javascript-Compiler kompilieren?
Habe mich leider noch nie mit Javascript beschäftigt und erkenne es daher nicht direkt.
Dann könnte ich nämlich schauen, ob es möglich ist einen solchen Compiler zu installieren.
Ich habe die kompilierte Datei auf meinen DL-Server hochgeladen. Beim Start geht ein "Datei öffnen"-Dialog auf, hier kannst du die Dateien auswählen.Standardmässig werden nur *.TXT dateien eingeblendet, wenn du aber andere möchtest kannst du hier mit *.DeineErweiterung die gewünschten Dateien anzeigen lassen. Du kannst eine oder wie im Explorer auch mehrere Dateien auswählen (hierzu Shift oder STRG-Taste benutzen) Nach bestätigen mit OK werden die Dateien der Reihe nach gekürzt (Zeile 1-12 bleiben erhalten, danach jede 15.) und mit .new als neue Erweiterung angehängt gespeichert, also aus Messung1.txt wird Messung1.txt.new. Die Originaldateien werden nicht verändert.
Beitrag zuletzt geändert: 21.10.2011 10:17:52 von harrybotter -
Leider hat er mir vorhin gesagt "unable to open the script" (oder sowas Ähnliches) und wenn ich es jetzt nochmal herunterlade, ist die datei ein Stück kleiner und er sagt mir, es sei keine 32Bit Anwendung. (hast du es neu hochgeladen?)
Ich schätze, um weitere Komplikationen zu vermeiden, sollte ich mich einfach mal mit der IT-Administration in Verbindung setzen.
Trotzdem vielen Dank für die Hilfe :) -
Hallo karikato,
hier meine Version in PureBasic:
FileName$ = OpenFileRequester("Datei auswählen...","","Alle Dateien|*.*",0) SaveName$ = SaveFileRequester("Speichern unter...","","Txt Dateien|*.txt",0) If ReadFile(0,Filename$) And CreateFile(1,SaveName$+".txt") WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) WriteStringN(1,ReadString(0)) Repeat WriteStringN(1,ReadString(0)) ;String 1 ReadString(0) ;String 2 ReadString(0) ;String 3 ReadString(0) ;String 4 ReadString(0) ;String 5 ReadString(0) ;String 6 ReadString(0) ;String 7 ReadString(0) ;String 8 ReadString(0) ;String 9 ReadString(0) ;String 10 ReadString(0) ;String 11 ReadString(0) ;String 12 ReadString(0) ;String 13 ReadString(0) ;String 14 WriteStringN(1,ReadString(0)) ;String 15 Until Eof(0) > 0 CloseFile(0) CloseFile(1) EndIf MessageRequester("Info","Fertig")
Und hier der Link http://download.lima-city.de/bytebit/Neu.exe zur Exe-Datei.
bytebit -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage