sabio23
Goto Top

mit batch Textzeile formatieren

Habe folgendes Problem.

Ich habe eine vorhandene Textdatei in der dies drin steht:

Dies
ist
ein
Text


Wie schaffe ich es nun mit batch diesen Text so zu formatieren, das am Ende dies herauskommt:

Dies
ist ein
Text

Also wie man sieht, will ich nur Zeile 2 und 3 zu einer Zeile bearbeiten, der Rest soll so bleiben.
Wie stelle ich das am besten an?

Danke für jede Hilfe

Content-Key: 83782

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

Printed on: April 16, 2024 at 23:04 o'clock

Member: funkmasta2k
funkmasta2k Mar 24, 2008 at 12:51:21 (UTC)
Goto Top
Stehen in Zeile 2 und 3 jeweils nur ein wort, oder evtl. sogar ein Satz? Der
dann von Zeile 3 hinter die 2. Zeile rutschen soll?
Member: sabio23
sabio23 Mar 24, 2008 at 12:59:27 (UTC)
Goto Top
das ist ein Satz

in 2 steht: put
und in Zeile 3 steht ein Pfad...

und das soll in eine Zeile

also: put pfad
Member: bastla
bastla Mar 24, 2008 at 13:18:53 (UTC)
Goto Top
Hallo sabio23 und willkommen im Forum!

Wenn es nur von der Zeilennummer abhängt, könntest Du so vorgehen:
@echo off & setlocal
set "Quelle=D:\Text.txt"  
set "Ziel=D:\TextNeu.txt"  
set "Zeile=2"  

set /a ZeilenNr=0
set AusgabeZeile=
if exist "%Ziel%" del "%Ziel%"  
for /f "usebackq delims=" %%i in ("%Quelle%") do call :ProcessLine "%%i"  
::move "%Ziel%" "%Quelle%" 
goto :eof

:ProcessLine
set /a ZeilenNr+=1
if defined AusgabeZeile goto :Ausgabe
if %ZeilenNr% neq %Zeile% (echo %~1>>"%Ziel%") & goto :eof  
set "AusgabeZeile=%~1" & goto :eof  

:Ausgabe
echo %AusgabeZeile% %~1>>"%Ziel%"  
set AusgabeZeile=
goto :eof
In"set Zeile=2" wird festgelegt, an Zeile welche die darauffolgende Zeile angefügt werden soll.

Um abschließend die Quelldatei durch die Zieldatei zu ersetzen (also sozusagen die Änderung "in der Quelldatei" durchzuführen), müsstest Du nur die beiden ":" vor "move" entfernen.

Grüße
bastla
Member: sabio23
sabio23 Mar 24, 2008 at 13:26:24 (UTC)
Goto Top
Vielen Dank, hat einwandfrei geklappt.

P.s.: Super Forum :P