lukeskywalker501
Goto Top

Mehrere Zeilen aus einer Anzahl von Textdateien per Batch entfernen

Hi Leute,

erst mal ein dickes moin an euch !

Ich habe folgende Sache und hoffe das ihr mir vielleicht helfen könnt. Folgender Fall:

Ich habe eine hohe Anzahl von *.*txt Dateien die mit gewissem Content gefüllt sind. Jede Textdatei beinhaltet einen großen Text über eine Vielzahl von Zeilen verteilt. Ich würde gerne aus allen TXT dateien alle Zeilen außer die ersten 3 löschen...Da sind die wichtigsten Informationen drin, die ich benötige ! alles andere würde ich gerne rausfiltern..

Wäre cool wenn ihr mir da helfen könntet... gruß Luke

Content-Key: 296791

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

Printed on: April 24, 2024 at 22:04 o'clock

Member: rubberman
rubberman Feb 20, 2016 at 01:25:50 (UTC)
Goto Top
Hallo lukeskywalker501.

Speichere folgenden Batchcode in das Verzeichnis mit deinen Textdateien:
@echo off &setlocal DisableDelayedExpansion
for %%i in (*.txt) do (
  set "file=%%i"  
  setlocal EnableDelayedExpansion
  for /f %%j in ('type "!file!"^|find /c /v ""') do if %%j gtr 3 (  
    <"!file!" >"3lines.tmp~" (  
      for /l %%k in (1 1 3) do (
        set "ln=" &set /p "ln="  
        echo(!ln!
      )
    )
    >nul move /y "3lines.tmp~" "!file!"  
  )
  endlocal
)

Grüße
rubberman
Mitglied: 114757
Solution 114757 Feb 20, 2016 updated at 21:41:04 (UTC)
Goto Top
Moin.
Und wer es etwas moderner möchte, mit Powershell ein kurzer one liner
gci 'c:\Ordner\*.txt' | %{(gc $_.Fullname -TotalCount 3) | set-content $_.Fullname}  

Die Anwendung In einer Batch ist ebenso möglich
@echo off
powershell -Executionpolicy Bypass -Command "gci 'c:\Ordner\*.txt' | %%{(gc $_.Fullname -TotalCount 3) | set-content $_.Fullname}"  

Gruß jodel32
Member: lukeskywalker501
lukeskywalker501 Feb 20, 2016 at 21:43:40 (UTC)
Goto Top
Danke an euch beide Jungs ! ihr seit echt Spitze...

Der Code von jodel hat funktioniert...bei deinem @rubbermann ist irgendwie nichts passiert ^^ Ich hab aber wohl auch zu wenig plan face-smile

Trotzdem mein höchster Dank an euch beide..

@jodel... der hat jetzt doch einiges an Content rausgehauen..wenn ich jetzt beispielsweise ab Zeile 4 alles raushauen wollte, müsst ich nur den {(gc $_.Fullname -TotalCount 3 --> zähler auf 4 oder 5 etc. setzen oder?

liebe grüße aus Hamburg Leute
Mitglied: 114757
Solution 114757 Feb 21, 2016 updated at 08:27:51 (UTC)
Goto Top
Zitat von @lukeskywalker501:
Trotzdem mein höchster Dank an euch beide..
Gern geschehen.
@jodel... der hat jetzt doch einiges an Content rausgehauen..wenn ich jetzt beispielsweise ab Zeile 4 alles raushauen wollte, müsst ich nur den {(gc $_.Fullname -TotalCount 3 --> zähler auf 4 oder 5 etc. setzen oder?
Korrekt. Der Parameter besagt wie viele Zeilen er aus der jeweiligen Textdatei vom Anfang an aus übernimmt.

jodel