faysax
Goto Top

txt File mit Batch ab bestimmer Zeilen Anzahl in Zwei .txt Files splitten

Hallo miteinander,

bisher bin ich über Google leider nicht fündig geworden aber vielleicht hilft mir hier jemand.

Ich möchte ein Text File in zwei kleinere Trennen ab einer bestimmten Zeilen Anzahl !

Bsp.

Ich habe eine txt mit 20000 Zeilen.
Die Zeilen Anzahl lass ich über ein Batch Zählen.
Nun möchte ich aber ds mir die Batch ab z.B. Zeile 10000 die ersten Zeilen in eine tmp.txt Speichert und die restlichen Zeilen in temp2.txt speichert
@echo off
set /a "Counter=0"  

for /f "delims=" %%a in (D:\meine.txt) do  set /a "Counter+=1"  
echo  %Counter%

Content-Key: 297230

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

Printed on: April 26, 2024 at 14:04 o'clock

Member: agowa338
agowa338 Feb 26, 2016, updated at Mar 09, 2016 at 15:23:05 (UTC)
Goto Top
Einfach in der For schleife eine If Anweisung platzieren und die Sache ist erledigt.
@echo off & setlocal EnableDelayedExpansion
set /a "Counter=0"  

for /f "delims=" %%a in (D:\meine.txt) do (  
  if !Counter! LEQ 10000 (
    echo %%a > DATEI_1.txt
  ) else (
    echo %%a > DATEI_2.txt
  )
  set /a "Counter+=1"  
)
echo %Counter%
Member: Faysax
Faysax Mar 07, 2016 updated at 07:23:01 (UTC)
Goto Top
Hallo agowa338,

Danke für deine Schnelle Hilfe.
Habe den Quellcode noch ein wenig angepasst. Jedoch Zählt es mir am Ende der for Schleife den Counter nicht hoch und belässt ihn auf 0. Somit schreibt er den ganzen Text in die Datei_1.txt. Habe zur Überprüfung die echo Counter Anweisung in die for Schleife mit eingebunden un dabei gibt er mir immer 0 aus.

@echo off
set /a "Counter=0"  

for /f "delims=" %%a in (D:\meine.txt) do (  
  if %Counter% LEQ 10000 (
    echo %%a >> DATEI_1.txt
  ) else (
    echo %%a >> DATEI_2.txt
  )
  set /a "Counter+=1"  
)
echo %Counter%
Member: Biber
Biber Mar 07, 2016 at 08:44:02 (UTC)
Goto Top
Moin Faysax,

die "verzögerte Variablenauflösung", neudeutsch DelayedExpansion muss aktiviert sein, da sonst keine Variable innerhalb einer Anweisung (=der FOR /F -Anweisung) neu aufgelöst wird.

@echo off & setlocal EnableDelayedExpansion
set /a "Counter=0"  

for /f "delims=" %%a in (D:\meine.txt) do (  
  if !Counter! LEQ 10000 (
    echo %%a >> DATEI_1.txt
  ) else (
    echo %%a >> DATEI_2.txt
  )
  set /a "Counter+=1"  
)
echo %Counter%

Grüße
Biber
Member: Faysax
Faysax Mar 08, 2016 at 14:39:10 (UTC)
Goto Top
Hallo Biber
Vielen Dank Funktioniert Top face-smile