Top-Themen

Aktuelle Themen (A bis Z)

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 CSV- Trennzeichen per Batch ändern für deutsches Excel

Mitglied: leknilk0815

leknilk0815 (Level 3) - Jetzt verbinden

21.11.2014, aktualisiert 22.11.2014, 2966 Aufrufe, 14 Kommentare

Servus,
ich bastle nun schon länger an einer Möglichkeit rum, die Delims in einer CSV- Datei (Wetterdaten) vom englischen Standard (Delims="," Dezimaltrennung=".") auf deutsch (Delims=";" Dezimaltrennung=",") umzubauen.
Leider gelingts mir nicht...
Die CSV sieht so aus (hier nur die erste Zeile (=Überschrift) und die ersten beiden Datenzeilen (können hunderte sein):
01.
,,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38 
02.
30.12.2009,21:05,16.1,5.6,5.3,3.9,3.1,3,-20.6,42.3,4,4.7,0,0,0,0,0,0,52,86,83,0,0,0,0,0,0,90,0,0,0,0,0,0,918,0,.5,0,0 
03.
22.04.2014,09:27,17.5,10.5,22.8,4.5,8.8,100,58.5,42.6,9.3,14.3,0,0,0,0,0,0,52,82,99,0,0,0,0,0,0,75,0,0,0,0,0,0,932,0,0,0,0
Es müssten also zuerst alle Kommas durch Semicolon ausgetauscht werden.
Dann müssten die Dezimaltrenner (".") durch Kommas getauscht werden, allerdings ohne dies beim Datum (Token 1) zu machen, da müssten die Punkte bleiben.
Ich habe versucht, zwei Dateien zu generieren, eine mit dem Datum und eine mit dem Rest, wobei ich beim "Rest" schon kläglich scheitere, weil ich keine Ahnung habe, wie man der Batch sagt, daß sie Token 2-38 "auslagern" soll, ohne daß man ""tokens=3,4,5,6,7,8,9,10...." schreibt...
01.
For /F "tokens=1 delims=," %%i in (probe.txt) do echo %%i  %%j >>probe-teil1.txt
01.
For /F "tokens=2,3,4 delims=," %%i in (probe.txt) do echo %%i  %%j  %%k >>probe-teil2.txt
...von Problemen wie dem, daß am Ende auch die Überschriftszeile wieder vorhanden sein muss, ganz zu schweigen...
Ein Beispiel, wie das zu bewerkstelligen ist, wäre natürlich genial...

Danke vorab!

Gruß - Toni
Mitglied: vossi31
21.11.2014, aktualisiert um 13:52 Uhr
Moin,

was willst Du denn erreichen? Per Doppelklick die CSV-Datei mit Excel öffnen?

Wenn es keine Aktion ist, die immer wieder vorkommt kannst Du doch ganz einfach über Öffnen in Excel den Textkonvertierungsassistenten benutzen und alles einfach einstellen. Wenn Du es immer wieder benötigt gibts es noch freie Kommandozeilen-Tools wie z.B. CSV2XLS um so etwas hinzubekommen.

Henning
Bitte warten ..
Mitglied: colinardo
21.11.2014, aktualisiert um 21:15 Uhr
Hallo Toni,
hatten wir hier schon einige male, für den direkten Import in Excel:
https://www.administrator.de/forum/alle-csv-dateien-in-einem-ordner-mit- ...

oder verabschiede dich mal von Batch und mach das mit Powershell :
01.
(Import-csv 'C:\test.csv' -Delimiter "," | ConvertTo-Csv -NoTypeInformation -Delimiter ";") -replace '("-?\d+)\.(\d+")','$1,$2' | out-file 'C:\test_out.csv'
Grüße Uwe
Bitte warten ..
Mitglied: leknilk0815
21.11.2014 um 16:43 Uhr
Zitat von colinardo:
oder verabschiede dich mal von Batch und mach das mit Powershell :

Servus Uwe,
danke mal, Powershell kannte ich noch nicht, habs aber mal probiert - mit mäßigem Ergebnis, mit dem ich alleine auch nicht weiterkomme, da ich der Syntax und damit der Fehlermeldung etwas hilflos gegenüberstehe...
Daher wollte ich auch mit Batch arbeiten, weil ich das zwar auch nicht gerade im Schlaf beherrsche, aber zumindest in der Lage bin, einen vorgefertigten Code auf meine Bedürfnisse anzupassen (damit meine ich nicht nur Pfadangaben...)
Wenn sich jemand "erbarmen" würde, mir da etwas zu schnipseln, wäre ich sehr dankbar.
@Henning
mit Excel hat das nichts zu tun, da kann ich mir selber helfen. Man könnte die Anpassung natürlich "schnell mal" auch mit Notepad oder/und Excel machen, aber wenn man das häufiger macht ist eine Batch (deren Arbeitsweise man versteht!) weit komfortabler.
Dafür jedoch ein Tool unbekannter Herkunft auf die Kiste zu packen ist eher ungut, zumal man eine Batch schnell mal an einen Wetterkollegen weitergeben kann, ein fremdes Tool würde die Sache unnötig komplizieren und wer weiß schon, was die kostenlosen Dinger sonst noch so treiben...
Aber trortzdem Dank für Deine Mühe!

Gruß - Toni

Hier noch das "Ergebnis" von Powershell:
01.
PS C:\> (Import-csv 'C:\@tmp\@csv-konvertierung\powershell\WetterAktuell.csv' -Delimiter "," | ConvertTo-Csv -NoTypeInformation -Delimiter ";" -Encoding UTF8) - 
02.
replace '("\d+)\.(\d+")','$1,$2' | out-file 'C:\@tmp\@csv-konvertierung\powershell\test_out.csv' 
03.
--------------------------------------------------------------- 
04.
ConvertTo-Csv : Es wurde kein Parameter gefunden, der dem Parameternamen "Encoding" entspricht. 
05.
Bei Zeile:1 Zeichen:145 
06.
+ (Import-csv 'C:\@tmp\@csv-konvertierung\powershell\WetterAktuell.csv' -Delimiter "," | ConvertTo-Csv -NoTypeInformation -Delimiter ";" -Encoding <<<<  UTF8) 
07.
 -replace '("\d+)\.(\d+")','$1,$2' | out-file 'C:\@tmp\@csv-konvertierung\powershell\test_out.csv' 
08.
    + CategoryInfo          : InvalidArgument: (:) [ConvertTo-Csv], ParameterBindingException 
09.
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.ConvertToCsvCommand
Bitte warten ..
Mitglied: colinardo
21.11.2014, aktualisiert um 17:51 Uhr
Hier noch das "Ergebnis" von Powershell:
Sorry,war nur ein Parameter zu viel, ist oben geändert
Bitte warten ..
Mitglied: 114757
LÖSUNG 21.11.2014, aktualisiert 22.11.2014
und in Batch etwa so:
(Für deinen Fall in dem in der Überschriftenzeile die ersten beiden Spaltennamen fehlen, angepasst)
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
set "eingabe=C:\daten.csv" 
03.
set "ausgabe=C:\daten_out.csv" 
04.
set header= 
05.
for /f "usebackq tokens=1,* delims=," %%a in ("%eingabe%") DO @( 
06.
  set rest=%%b 
07.
  set rest=!rest:,=;! 
08.
  if not defined header ( 
09.
        set header=Datum;Zeit;%%a;!rest! 
10.
	echo !header!>"%ausgabe%" 
11.
  ) else ( 
12.
 	set rest=!rest:.=,! 
13.
  	echo %%a;!rest!>>"%ausgabe%" 
14.
15.
)
Gruß jodel32

edit noch was korrigiert.
Bitte warten ..
Mitglied: leknilk0815
21.11.2014, aktualisiert um 20:52 Uhr
Zitat von colinardo:
Sorry,war nur ein Parameter zu viel, ist oben geändert
Danke für die Korrektur
...nun kommt die Meldung in abgeänderter Form...

01.
Import-Csv : Das Element "0" ist bereits vorhanden. 
02.
Bei Zeile:1 Zeichen:12 
03.
+ (Import-csv <<<<  'C:\@tmp\@csv-konvertierung\powershell\WetterAktuell.csv' - 
04.
Delimiter "," | ConvertTo-Csv -NoTypeInformation -Delimiter ";") -replace '("\d 
05.
+)\.(\d+")','$1,$2' | out-file 'C:\@tmp\@csv-konvertierung\powershell\test_out. 
06.
csv' 
07.
    + CategoryInfo          : NotSpecified: (:) [Import-Csv], ExtendedTypeSyst 
08.
   emException 
09.
    + FullyQualifiedErrorId : AlreadyPresentPSMemberInfoInternalCollectionAdd, 
10.
   Microsoft.PowerShell.Commands.ImportCsvCommand
Bitte warten ..
Mitglied: colinardo
LÖSUNG 21.11.2014, aktualisiert 22.11.2014
Zitat von leknilk0815:
Danke für die Korrektur
...nun kommt die Meldung in abgeänderter Form...
Öhm was verwendest du hier für Pfadnamen mit einem @ am Anfang ??

-Edit-
Hmm, dein Eingabefile scheint in der Überschriftenzeile komisch zu sein (eventuell doppelte Überschriften für zwei Spalten ? läuft hier mit deinem Demodaten von oben einwandfrei !
Warum sind die ersten beiden Spalten deiner Überschriftenzeile leer ? Oder du hast den Code nicht korrekt kopiert überprüfe ihn nochmal.
Bei ganz harten Fällen geht's auch so:
((gc 'c:\Daten.csv' | %{'"' + $_ + '"'}) -replace ',','";"') -replace '("-?\d*)\.(\d+")','$1,$2' | out-file 'C:\Daten_out.csv'
oder so
gc 'c:\Daten.csv' | %{$line = $_.Replace(',',';').Split(';',2); ($line[0] + ';' + $line[1].Replace('.',','))} | out-file 'C:\Daten_out.csv'
Bitte warten ..
Mitglied: leknilk0815
22.11.2014 um 09:33 Uhr
@114757:
Servus und danke für die Arbeit, die Batch funktioniert (fast) wie gewünscht.
Einziges Manko: in der ersten Zeile der Quelldatei (=Spaltenbeschreibung) sind am Anfang zwei ",,", die ebenfalls in ";;" umgewandelt werden sollen.
Die Batch macht daraus leider (in Worten!): "Datum;Zeit;" - der Rest passt.
Kann man das vielleicht noch ändern?

Gruß - Toni
Bitte warten ..
Mitglied: leknilk0815
22.11.2014 um 09:34 Uhr
@colinardo:
vielen Dank auch Dir, die letzte Version funktioniert mit allen Schikanen.
Leider gibts aber noch viele Leute, die als Wetterrechner WIN XP laufen haben.
Da die Powershell erst ab Win7 verfügbar ist, werde ich wohl lieber die Batch von jodel32 bevorzugen (sofern das mit den beiden ersten Spaltenüberschriften in den Griff zu bekommen ist), weils mit Batch halt keine "Kompatibilitätsprobleme" giben würde.
<quote>Öhm was verwendest du hier für Pfadnamen mit einem @ am Anfang ??</quote>
das "@" am Anfang verwende ich, weil in der Listung vom Explorer ein "@" das Verzeichnis ganz oben aufhängt. Ist bei Tests übersichtlicher...
Bitte warten ..
Mitglied: colinardo
22.11.2014 um 11:56 Uhr
Da die Powershell erst ab Win7 verfügbar ist
Die lässt sich problemlos auch in XP nachrüsten
http://support.microsoft.com/kb/968929/de-de
Bitte warten ..
Mitglied: 114757
22.11.2014, aktualisiert um 12:02 Uhr
Zitat von leknilk0815:

@114757:
Servus und danke für die Arbeit, die Batch funktioniert (fast) wie gewünscht.
Einziges Manko: in der ersten Zeile der Quelldatei (=Spaltenbeschreibung) sind am Anfang zwei ",,", die ebenfalls in
";;" umgewandelt werden sollen.
Die Batch macht daraus leider (in Worten!): "Datum;Zeit;" - der Rest passt.
Kann man das vielleicht noch ändern?

Gruß - Toni
Na den Code einmal durchzulesen, kann man eigentlich schon erwarten, dann weißt du wo du was ändern musst, dafür sollten rudimentäre Batchkenntnisse ausreichen. Tipp: Siehe Zeile 9 !
Das schafft sogar mein Sohneman

Gruß jodel32
Bitte warten ..
Mitglied: leknilk0815
22.11.2014 um 12:15 Uhr
Zitat von 114757:
Tipp: Siehe Zeile 9 !
Das schafft sogar mein Sohneman
Danke, läuft.
Bitte warten ..
Mitglied: leknilk0815
22.11.2014 um 12:19 Uhr
Servus,
daß man das "nachrüsten" kann, war schon klar, aber genau das soll ja vermieden werden.
Bei einer Batch ist es praktisch egal, welches MS- OS läuft, die geht überall. Daher brauchts keine Erklärungen, was man alles erst erledigen muss, bevor man eine CSV konvertieren kann.
So - Thema erledigt, ich bin voll zufrieden und hab wieder was gelernt.

Danke an euch beide und Gruß - Toni
Bitte warten ..
Mitglied: 114757
22.11.2014, aktualisiert um 12:29 Uhr
Die paar XPler sterben auch bald aus ... Zur Info: Batch ist in den nächsten 3,4 Jahren in neueren Windows OS abgekündigt ! Habe ich auf einer MS Konferenz mitbekommen, Powershell wird sie ablösen, also rechtzeitig mal was Neues lernen sonst verpasste den Anschluss.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell: Excel zu CSV - Trennzeichen ändern??

gelöst Frage von Timo0oBatch & Shell3 Kommentare

Moin! Wie bekomm ich die Powershell dazu, die Excel Tabelle nicht mit Komma, sondern mit Semikolon Trennzeichen als CSV ...

Windows XP

Zeilen einer zusammengeführten CSV Datei über Batch ändern

Frage von NelspruitWindows XP12 Kommentare

Hallo zusammen, ich habe über batch ca. 1000 CSV Datein (Messdaten) zusammengeführt. Das Ganze schaut nun in der neuen ...

Batch & Shell

CSV-Datei nach Excel importieren

Frage von mrvfbnummer2Batch & Shell5 Kommentare

Hallo Leute, ich möchte CSV-Dateien in eine Excel-Datei mit PowerSell importieren. Ich habe bereits viel ausprobiert aber habe noch ...

Microsoft Office

Excel 2013 - Daten aus Word Datei ohne Trennzeichen importieren

Frage von AtompiltzMicrosoft Office4 Kommentare

Hallo zusammen, ich möchte die Adressdaten aus einer Word-Datei in Excel importieren. Jede Adresse ist in einer Zeile geschrieben, ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...