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

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: bastla
Lösung bastla 06.01.2016 aktualisiert um 18:00:51 Uhr
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
Mitglied: sirOne
sirOne 06.01.2016 um 18:00:40 Uhr
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