sirone
Goto Top

Textdatei in neue Datei schreiben - dabei erste Zeile entfernen, überschrift und zeilenweise Text hinzufügen

Hallo ihr Lieben,

ich habe eine Textdatei in der Form

#Protokollzeile
Überschrift1;Überschrift2;Überschrift3
Inhalt1;Inhalt2;Inhalt3
Inhalt1;Inhalt2;Inhalt3
Inhalt1;Inhalt2;Inhalt3

und möchte diese nun in eine neue Datei schreiben. Dabei möchte ich die erste Zeile entfernen, eine weitere Überschrift hinzufügen und in jede weitere Zeile somit auch neuen (gleichbleibenden) Inhalt. Folgenden Code versuche ich:

@echo off & setlocal

set szenario=szenario

set "Datei=Datei.csv"  
set "Enddatei=..\Datei%szenario%.csv"  

set "Erste="  
for /f "delims=" %%i in ('dir /b /o-d "%Datei%" 2^>nul') do set "Erste=%%i"  
if not defined Erste echo Keine passenden Dateien gefunden! & goto :eof
>"%Enddatei%" more +1 "%Erste%;Szenario"  
for /f "skip=1 delims=" %%i in ('dir /b /od "%Datei%"') do >>"%Enddatei%" more +2 "%%i;%szenario%;%szenario%"  

Leider erhalte ich eine Fehlermeldung. Lasse ich die Ergänzungen in Zeile 11 und 12 weg funktioniert es (die Datei wird ohne die erste Zeile kopiert). Ich vermute also, dass ich einen Syntaxfehler begehe mit den Ergänzungen?

Leider kenne ich mich nicht sehr gut aus und habe meinen Startcode auch hier aus dem Forum, hoffe also auf kompetente Hilfe (-:

Einen lieben Gruß
One

Content-Key: 292365

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

Printed on: April 19, 2024 at 17:04 o'clock

Member: bastla
Solution bastla Jan 06, 2016 updated at 17:00:51 (UTC)
Goto Top
Hallo sirOne!

Was Du vorhast sollte eher so funktionieren:
@echo off & setlocal

set szenario=szenario

set "Datei=Datei.csv"  
set "Enddatei=..\Datei%szenario%.csv"  

set "Ueber="  
for /f "usebackq skip=1 delims=" %%i in ("%Datei%") do (  
    if not defined Ueber (
        set "Ueber=done"  
        >"%Enddatei%" echo %%i;Szenario  
    ) else (
        >>"%Enddatei%" echo %%i;%szenario%;%szenario%  
    )
)
Der Code von oben hatte als Zielsetzung, mehrere CSV-Dateien zusammenzufassen, aber die Überschrift nur ein einziges Mal (in die erste Zeile der Zieldatei) zu schreiben - daher die Verwendung von "more". UmText in eine Datei zu schreiben, wird "echo" verwendet ...

BTW: Willst Du tatsächlich nur eine Feldüberschrift ("Szenario"), aber zwei Felder (%szenario%;%szenario%) hinzufügen?

Grüße
bastla
Member: sirOne
sirOne Jan 06, 2016 at 17:00:40 (UTC)
Goto Top
Vielen Dank bastla... und schon geht es... und sieht wieder mal so einfach aus (-:

";%szenario%" sollte natürlich nur einmal da stehen!

Lieben Gruß
One