kostenloser Webspace werbefrei: lima-city


Zeilen in einer txt löschen - mit Batch

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    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?

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Am einfachsten wäre es, jede Zeile einzeln einzulesen und die gewünschten Zeilen dann in einer weiteren Datei zu speichern.
  4. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    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.
  5. karikato schrieb:
    Oder gäbe es in einer andere Sprache eine leichtere Lösung?
    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:
    #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
    Es kann aus AutoIt heraus gestartet werden oder auch zu einer ausführbaren EXE compiliert werden.

    Edit: Skript noch einmal geändert (ist gleiche Version wie auf DL-Server)

    Edit2:
    kigollogik schrieb:
    Eigeninitiative?

    karikato schrieb:
    Mit Batch kenn ich mich leider nicht aus


    Dann wird es schwer ^^
    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.

    Beitrag zuletzt geändert: 21.10.2011 11:01:19 von harrybotter
  6. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    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.
  7. karikato schrieb:
    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.
    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.
    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
  8. Autor dieses Themas

    karikato

    Kostenloser Webspace von karikato

    karikato hat kostenlosen Webspace.

    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 :)
  9. 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
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!