Batch Jede nte Zeile aus txtdatei kopieren und in andere txtdatei schreiben

Asliv

Ensign
Registriert
Dez. 2010
Beiträge
134
Hey Leute,

ich würde gerne, wie oben beschrieben, jede Nte Zeile aus einer Textdatei kopieren und in eine andere hineinschreiben und das per Batch Skript realisieren.

Es wäre nett wenn mir da jemand eine Lösung oder einen Ansatz geben könnte.

mfg

Asliv
 
Ich bin mir nicht sicher ob du per Batch die Inhalte "filtern" kannst...
 
Ich mir auch nicht, deswegen hab ich nachgefragt. :D

PowerShell vielleicht?
 
Ich hätte auf Anhieb Code in VBS, weil selbst sowas für Batch nicht ordentlich gelöst bekommen habe.
 
Magst du mir den mal zukommen lassen?

Ich hab da zwar auch keine Ahnung von, aber jeder fängt mal klein an.
 
Code:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWriteFile = objFSO.CreateTextFile("Ergebnis.txt", True)
Set objTextFile = objFSO.OpenTextFile("Lesen.txt", ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
arrLines = Split(strText, vbCrLf)
For j = 0 to Ubound(arrLines) Step 1
		objWriteFile.WriteLine arrLines(j)
Next
objWriteFile.Close

Die ersten vier Zeilen sollten sich ja von selbst erklären. In der fünften Zeile wird die gelesene Datei zeilenweise zwischengespeichert, da "vbCrLf" den Zeilenumbruch beschreibt. Die for-Schleife geht bis zur letzten Zeile. Aufpassen: wenn mich nicht alles täuscht fängt der Zeilenindex bei 0 an. Step # ist dann die Schrittweite.

Hoffe das hilft dir weiter.
 
Hi,

Code:
@echo off & setlocal
for %%i in (test.txt) do (
set cnt=1
set out=%%~dpni
for /F "delims=" %%j in ('type "%%i"') do (
call :EXT %%j
)
)
goto :EOF

:EXT
set pass=11
set /A cnt+=1
if %cnt% neq %pass% goto :EOF
set cnt=1
echo.%*>> "%out%-new.txt"
goto :EOF
:: End_Of_Batch

Pfade natürlich noch anpassen. Das gibt jetzt z.B. die 10. Zeile, die 20. Zeile, die 30. Zeile usw aus... Mit den "pass" Variablen kannst du darauf Einfluss nehmen.

Habe ich auch nur kopiert und editiert, Original kommt von hier. Kann eventuell noch optimiert werden.

VG,
Mad
 
Und mit der Powershell könnte es so aussehen:

Code:
$content = Get-Content -Path "C:\test.txt"
$lines = $content.count - 1 

for ($i= 5; $i -lt $lines; $i+=5) {
	
	Add-Content -Path "C:\ausgabe.txt" -Value $content[$i]
}

Gruß,
sal
 
Hi,

ich habe mein Problem jetzt etwas anders gelöst mit einem cmd Befehl.

Code:
type <name.txt> | findstr [^[0-9][0-9][0-9][0-9]]

Jede Zeile beginnt mit einer vier stelligen Zahl und ist damit unique.

mfg

Asliv

Kann ich als OP den Thread als gelöst markieren?
 
Zurück
Oben