Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per Batch-Job Zeichen einfügen in txt

Frage Entwicklung Batch & Shell

Mitglied: SimonPeter

SimonPeter (Level 1) - Jetzt verbinden

04.06.2008, aktualisiert 14:05 Uhr, 9670 Aufrufe, 9 Kommentare

Hallo Batch-Experten

Hoffentlich nimmt es mir niemand übel, wenn ich mich anmelde und nichts besseres weiss, als gleich eine Frage zu stellen...

Folgendes Problem, welches ich gerne mit einem Batch Job erledigen würde:

Eine Datei, welche aus einer Applikation in eine txt exportiert wird, muss in jeder Zeile um ein ";" ergänzt werden (Leider ist dieses Manko zur Zeit nicht anders zu beheben)

Der Inhalt sieht in etwa folgendermassen aus:

Datum;Text1;Text2;Text3;Text4;Text5;Text6;Text7;Text8;Text9
02.06.2008;Antwort1;Antwort2;;;Antwort3;;Antwort4;;;;;;;;Antwort5;;;;;;;;;;;;;;;;;;
03.06.2008;Antwort6;Antwort7;;;;;;Antwort8;;;Antwort9;;;;;;;;;;;;;;;;;;
etc...
etc...


Ab der zweiten Zeile muss bei der letzten Sammlung von ";" jeweils eins hinzugefügt werden.
Die Zeilen sind unterschiedlich lang und jeweils durch unterschiedlich viele ";" ergänzt.

Wäre für Tipps und Hinweise sehr dankbar!

Merci aus der Schweiz

Simon
Mitglied: SnowStar
04.06.2008 um 09:35 Uhr
Hallo,

vielleicht hilft dir das hier (ein wenig) weiter:
01.
for /f %i in (test.txt) do @echo %i; >> test_neu.txt
Die test.txt wird Zeilenweise ausgelesen, die ausgelesene Zeile mit einem Semikolon am Ende wieder ausgegeben, diese Ausgabe wird an die test_neu.txt angehängt (sie sollte also am besten noch nicht existieren oder leer sein).

Aber ACHTUNG: Leerzeilen werden übersprungen, d.h. nicht abgebildet. So wird aus:
01.
Dies ist die erste Zeile 
02.
Dies ist die zweite Zeile 
03.
 
04.
Dies ist die vierte Zeile 
05.
Dies ist die fünfte Zeile
das hier:
01.
Dies ist die erste Zeile; 
02.
Dies ist die zweite Zeile; 
03.
Dies ist die vierte Zeile; 
04.
Dies ist die fünfte Zeile;
Hoffe es hilft dir trotzdem!

Gruß
Snow
Bitte warten ..
Mitglied: Biber
04.06.2008 um 10:55 Uhr
Moin SimonPeter,

willkommen im Forum.
Nur ergänzende Anmerkung zu SnowStars Lösung.
a) sicherheitshalber solltest Du noch ein "delims=" ergänzen, da sonst nur bis zum ersten Leerzeichen in der zeile gelesen wird (falls eines da sein sollte)
b) es ist nicht zu ändern, dass Du in eine neue Datei scheiben musst - Du kannst nicht direkt die vorhandene "ändern". Bestenfalls hinterher die "neue Datei" über die "alte Datei" kopieren/moven.
Modifizierter CMD-Prompt-Ansatz:
01.
for /f "delims=" %i in (test.txt) do @echo %i; >> test_neu.txt
P.S. Nachfrage.
Ab der zweiten Zeile muss bei der letzten Sammlung von ";" jeweils eins hinzugefügt werden.
??? Kann ich kaum glauben. Nicht plausibel. Soll die erste Zeile ganz übersprungen werden (nicht in "DateiNeu" ubernommen)??

Grüße
Biber
Bitte warten ..
Mitglied: SimonPeter
04.06.2008 um 12:03 Uhr
Das ist ja der Wahnsinn hier! Vielen Dank für die schnellen Antworten.

@Biber: Die erste Zeile soll so bestehen bleiben wie sie ist (und auch als solche übernommen werden) aber eben nicht geändert, rsp ergänzt mit einem ";"

Merci und Kompliment!

Simon
Bitte warten ..
Mitglied: Biber
04.06.2008 um 12:40 Uhr
Moin SimonPeter,

wenn die erste (Kopf-)Zeile in der *.csv-Datei tatsächlich "richtig" ist und alle Datenzeilen ein Feld zu wenig haben...

a) hau dem "Programmierer" des Datenexports eins auf die Schnauze und sag "Schönen Gruß von Biber"
b) ändere den Ablauf wie folgt.
01.
::-- snipp CsvKorr.cmd 
02.
@echo off & setlocal 
03.
Set /p ersteZeile=<test.txt 
04.
echo %ersteZeile%>test_neu.txt 
05.
for /f "skip=1 delims=" %%i in (test.txt) do @echo %%i;>>test_neu.txt 
06.
>::-- snapp CsvKorr.cmd
Grüße
Biber
[Edit] Bugfix doppeltes %-Zeichen. siehe unten.[/Edit]
[Edit2] Unnötiges Leerzeichen vor dem ">>" entfernt. Siehe bastlas Hinweis unten.[/Edit2]
Bitte warten ..
Mitglied: SimonPeter
04.06.2008 um 13:21 Uhr
"*.csv" --> Bist mein Held!

Eins auf die Schnauze hat er bereits erhalten...

Probiere es asap aus.

Simon
Bitte warten ..
Mitglied: SimonPeter
04.06.2008 um 13:46 Uhr
Error Zeile 5: "i" ist syntaktisch an dieser Stelle nicht verarbeitbar

Was 'n hier los?

Merci!

Simon
Bitte warten ..
Mitglied: Biber
04.06.2008 um 13:49 Uhr
Moin SimonPeter,

Error Zeile 5: "i" ist syntaktisch
Sorry, mein Fehler.
In Batchdateien alle "%i"-Variablen mit 2 %-Zeichen schreiben.
Direkt am CMD-Prompt mit einem %-Zeichen.
ich korrigiere es oben.

Grüße
Biber
Bitte warten ..
Mitglied: SimonPeter
04.06.2008 um 14:05 Uhr
Super, hat geklappt! - Selten ein so engagiertes Forums-Team getroffen!

Vielen, herzlichen Dank. I owe you...

Simon
Bitte warten ..
Mitglied: bastla
04.06.2008 um 14:05 Uhr
... und falls das noch jeweils am Ende angefügte Leerzeichen stören sollte:
01.
... 
02.
for /f "skip=1 delims=" %%i in (test.txt) do @echo %%i;>>test_neu.txt
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(7)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...