tegee08
Goto Top

Textdatei erste Zeile löschen und Gänsefüßchen entfernen

Hallo zusammen,

ich bin begeistert von diesem Forum, habe in 2 Stunden schon sehr viel gelernt! Einfach klasse.

Jetzt zu meinem Problem:

habe eine Datei mit folgendem Ihnhalt
*Anfang*
Firma;Vorname;Name;Strasse;Plz;Ort;Lkz;ReNr;Verfahren
"musterfirma";"Matthias";"Kfsdsdgdf";"straßenplatz 15";"79332";"MtrettrreOrt";"DE"
"musterfirma";"Manfred";"dfgdfgf";"straßenweg 15";"79778";"MtrettrreOrt";"DE"

usw
*Ende*

diese Datei muss an ein Programm übergeben werden, wobei die erste Zeile raus muss und die Gänsefüßchen verschwinden müssen.

Bislang mache ich das händisch mit dem guten alten Notepad.

Das ersetzen der Gänsefüßchen habe ich auch schon hinbekommen mit Hilfe des Forums. Das sieht so aus:

*Anfang*
@echo off & setlocal
set "Ein=c:\test.txt"
set "Aus=c:\test2.txt.txt"

set "Cvt=%temp%\ConvSC.vbs"
echo Set fso=CreateObject("Scripting.FileSystemObject"):fso.OpenTextFile("%Aus%",2,True).Write Replace(fso.OpenTextFile("%Ein%",1).ReadAll,Chr(34),"")>"%Cvt%"
cscript //nologo "%Cvt%"
del "%Cvt%"
*Ende*

funktioniert auch super gut

Ich würde mich freuen, wenn mir jemand bei dem Problem hilft, da ich überhaupt keine Ahnung davon habe.

Schon mal besten Dank.

Content-Key: 85789

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

Printed on: April 24, 2024 at 11:04 o'clock

Member: Biber
Biber Apr 17, 2008 at 16:56:07 (UTC)
Goto Top
Moin tegge08,

willkommen im Forum.
Mit reinen Batchmitteln ginge es als Oneliner vom CMD-Prompt so:
>type e:\work\Gangster.txt
Firma;Vorname;Name;Strasse;Plz;Ort;Lkz;ReNr;Verfahren
"musterfirma";"Matthias";"Kfsdsdgdf";"straßenplatz 15";"79332";"MtrettrreOrt";"DE"  
"musterfirma";"Manfred";"dfgdfgf";"straßenweg 15";"79778";"MtrettrreOrt";"DE"  

>setlocal enableDelayedExpanson & @for /f "skip=1 delims=" %i in (e:\work\Gangster.txt) do @set "ln=%i" && @echo !ln:"=!  
musterfirma;Matthias;Kfsdsdgdf;straßenplatz 15;79332;MtrettrreOrt;DE
musterfirma;Manfred;dfgdfgf;straßenweg 15;79778;MtrettrreOrt;DE
Die zweite mit ">" beginnende Zeile ist die von Dir einzugebende - Dateinamen natürlich anpassen.

Wenn das so passt, dann kannst Du diese Bildscirmausgabe umleiten mit ">neueDatei.txt" am Einde der Zeile.

Und/Oder das ganze als Batchdatei speichern, dann aber alle %i zu %%i ändern.

Grüße
Biber

P.S. Wie Du Deinen Code als formatieren kannst steht in den Häufigen Fragen/FAQ.
Member: bastla
bastla Apr 17, 2008 at 17:13:02 (UTC)
Goto Top
Hallo tegee08 und willkommen im Forum!

Die VBS-gestützte Variante sähe so aus:
@echo off & setlocal
set "Ein=c:\test.txt"  
set "Aus=c:\test2.txt.txt"  

set "Cvt=%temp%\ConvSC.vbs"  
echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein%").ReadAll:fso.OpenTextFile("%Aus%",2,True).Write Replace(Mid(T,InStr(T,vbCrLF)+2),Chr(34),"")>"%Cvt%"  
cscript //nologo "%Cvt%"  
del "%Cvt%"  

Grüße
bastla
Member: tegee08
tegee08 Apr 17, 2008 at 17:56:18 (UTC)
Goto Top
Klasse!

damit bin ich schon ein Stück weiter.

Geht das auch, ohne, dass eine weitere Datei erzeugt wird, also die vorhandene bearbeiten, erste Zeile löschen, Gänsefüßchen rausschmeißen und wieder speichern?

ach ja und was mir leider erst jetzt aufgefallen ist....am besten noch den String Firma; suchen und wenn nicht vorhanden, dann nicht die erste Zeile löschen.

oder andersrum: nur wenn Firma; in erster Zeile vorhanden ist dann löschen sonst nur Gänsefüßchen raus.

thx
Member: bastla
bastla Apr 17, 2008 at 18:33:23 (UTC)
Goto Top
Hallo tegee08!

Das integrierte Script ließe sich zwar noch immer in eine Zeile schreiben, aber durch die Aufteilung wird's etwas handlicher (und lesbarer face-wink):
@echo off & setlocal
set "Ein=c:\test.txt"  

set "Cvt=%temp%\ConvSC.vbs"  
echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein%").ReadAll>"%Cvt%"  
echo If InStr(Split(T,vbCrLF)(0),"Firma;") Then T=Mid(T,InStr(T,vbCrLF)+2)>>"%Cvt%"  
echo fso.OpenTextFile("%Ein%",2,True).Write Replace(T,Chr(34),"")>>"%Cvt%"  
cscript //nologo "%Cvt%"  
del "%Cvt%"  

Grüße
bastla
Member: Biber
Biber Apr 17, 2008 at 19:21:35 (UTC)
Goto Top
@bastla
aber durch die Aufteilung wird's etwas handlicher (und lesbarer

Na ja, das würde ich nicht verallgemeinern... ob das sooo viele sooo fließend lesen können?

Also - ich kann es ja gut lesen, aber ich kenne ein paar Leute, die etwas hysterisch zu Kichern beginnen, wenn ich denen das am Telefon durchgebe...

Grüße
Biber
Member: bastla
bastla Apr 17, 2008 at 19:27:19 (UTC)
Goto Top
@Biber
Ich sag doch: lesbarer face-wink - und ich hab' schon Schlimmeres als das da verbrochen (und Du auch face-wink) ...

ein paar Leute, die etwas hysterisch zu Kichern beginnen, wenn ich denen das am Telefon durchgebe...
Die haben's aber sicher alle verdient ...

BTW: Telefonierst Du eigentlich öfter Bätche?

Grüße
bastla
Member: Biber
Biber Apr 17, 2008 at 21:15:41 (UTC)
Goto Top
@bastla
BTW: Telefonierst Du eigentlich öfter Bätche?
Unter uns: Im Moment habe ich mich bei einer anonym bleiben wollenden magentafarbenen Firma verdingt.
Deren Kerngeschäft ist witzigerweise ...nein, das verrat ich jetzt nicht.

Und für die ist jedenfalls ein per Telefon durchbuchstabierter Batch die einzige stabile Remoteverbindung, die sie kennen..... face-big-smile
... vorausgesetzt die beiden Telefonierer haben ihre Handys bei O2 und Vodafone und nix Pinkes...

Aber nich' weitererzählen bitte.

Grüße
Biber
Member: bastla
bastla Apr 17, 2008 at 21:23:10 (UTC)
Goto Top
@Biber
Im Moment habe ich mich bei einer anonym bleiben wollenden magentafarbenen Firma verdingt.
Na, dann wird's mit denen ja doch noch was ... face-wink

Fangen solche Bätche dann übrigens so an?
@echo off & setlocal & color fd

Grüße
bastla
Member: Biber
Biber Apr 17, 2008 at 22:23:02 (UTC)
Goto Top
@bastla

Wo denkst Du hin - hier hat jeder Rechner als Standard:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor
    DefaultColor        REG_DWORD       0xfd

... und macht düdüddelidü bei der Anmeldung.

Und wir haben MSOD's statt der doofen BSOD's...

Na gut, genug OT für heute ...

Grüße
Biber
Member: tegee08
tegee08 Apr 18, 2008 at 06:56:19 (UTC)
Goto Top
Danke an euch Beide

das klappt wie verrückt face-smile

einen habe ich noch (weil ich echt im Tal der Ahnungslosen bin)

kriegt ihr das noch rein, dass die Datei zum Abschluss an eine bestimmte Stelle kopiert wird z.B. d:\daten
Member: Biber
Biber Apr 18, 2008 at 09:04:24 (UTC)
Goto Top
Moin, tegee08,

dann könntest Du die ursprüngliche Variante mit der Variablen %Aus5 wieder beleben.

...
set "Ein=c:\test.txt"  
set "AusDir=D:\Daten"  
....
....
cscript //nologo "%Cvt%"  
copy /y "%ein%" "%AusDir%\"  

Wenn es denn wirklich ein Kopieren soll.
Du könntest sonst -IMHO besser- lieber das Original unverändert lassen und die Kopie gleich in D:\Daten ablegen.

Grüße
Biber
Member: tegee08
tegee08 Apr 18, 2008 at 11:38:35 (UTC)
Goto Top
ja, danke für den Gedankenanstoß, das mit dem Original mache ich aus so

vielen dank für alles, hat mir sehr geholfen