Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Eine Spalte aus einer anderen CSV übernehmen

Frage Entwicklung Batch & Shell

Mitglied: chrislm

chrislm (Level 1) - Jetzt verbinden

07.03.2012, aktualisiert 18.10.2012, 2509 Aufrufe, 14 Kommentare

Hallo
ich bin mit meinen batchdateien soweit durch aber ein kleines Problem habe ich noch.
Eine CSV mit Adresse und geburtsdatum wird versedet und kommt verarbeitet zurück. Leider ist dann das Datum in der empfangenen Datei etwas durcheinander, es fehlen die Jahreszahlen. in der von mir erstellten Datei ist aber das Datum richtig.
Nun suche ich eine Möglichkeit bei der empfangenen Datei das datum aus der 1. Datei zu übernehmen.

Das Datum steht bei beiden in Spalte 8.

nach meinen Versuchen scheint das mit einer Batchdatei unmöglich zu sein. kann man sowas über VBS lösen?
Mitglied: TsukiSan
07.03.2012 um 13:44 Uhr
Hallo chrislm

kann man sowas über VBS lösen?
JA!

Aber wenn du Hilfe hier beantragst, benötigen die Helfenden noch etwas mehr Input, damit der Output nicht kaputt geht

Spass beiseide.
Wenn du beide Dateien als Beispiel hier mal posten könntest, dann schauen wir, was sich machen lässt.

Gruss
Tsuki
Bitte warten ..
Mitglied: it-frosch
07.03.2012 um 13:54 Uhr
Hallo chrislm,

die erste Frage wäre ob du diese Arbeit regelmäßig hast oder ob das im Moment eine einmalige Sache ist.

Bei Regelmäßigkeit wäre ich für evtl. VBS bei Einmaligkeit für den simplen SVERWEIS.

Du liest beide CSV in eine extra Karteikarte ein und verknüpfst die Datumsspalte über SVERWEIS.
Solle auch bei Tausenden von Datensätzen eine Arbeit von ca. 10min sein (Maximal!).

grüße vom it-frosch
Bitte warten ..
Mitglied: chrislm
07.03.2012 um 14:07 Uhr
also die sehen soweit identisch aus, und haben folgenden kopf:
"Nr";"Geschlecht";"Name";"Vorname";"PLZ";"Ort";"Strasse";"GebDat"
Um diese Datei zu erstellen gehe ich so vor:
for /f "tokens=1,16,1-16 delims=;" %%a in (out.txt) do echo %%p;%%c;%%d;%%e;%%f;%%g;%%h;%%i>>fertig.txt

das klappt uach soweit bisauf das Datum worin die Jahreszahlen verscwunden sind. Das ist aber kein Problem da ich die Daten vorher in einer CSV nochmal habe. Deswegen möchte ich gerne das Datum aus der ursprungsdate wieder eingepflegt haben.

So hatte ich mir das gedacht: wenn ich eine for schleife mache aus der datei mit dem richtigen Datum, mache es mit set x% =h%% und baue die 2. for - Schleife mit der out.csv und schreibe dann für h%% einfach von der anderen das x% ins echo......

aber ich weiß nicht wie man es richtig programiert...
Bitte warten ..
Mitglied: chrislm
07.03.2012 um 14:14 Uhr
ich generiere täglich 2- 3 Dateien. früher wurde alles von Hand gemacht und nun, seit ich den Job hier habe, habe ich mir batches erstellt die fast alles von alleine machen. es klappt uach bisauf den schönheitsfehler. die tabellen sind gleich und ich kann die zwar mit copy und past in excel tauschen aber wenn ich es als batch lösen kann wäre das klasse...
Bitte warten ..
Mitglied: TsukiSan
07.03.2012 um 14:23 Uhr
mit copy und past in excel tauschen aber

da würde sich doch der Makrorekorder vom Excel bestens zu eignen. Lass den arbeiten

Gruss
Tsuki
Bitte warten ..
Mitglied: bastla
07.03.2012, aktualisiert 18.10.2012
Bitte warten ..
Mitglied: Pjordorf
07.03.2012 um 14:53 Uhr
Hallo,

Zitat von chrislm:
Eine CSV mit ... wird versedet und kommt verarbeitet zurück. Leider ist dann das Datum in der empfangenen Datei etwas durcheinander, es fehlen die Jahreszahlen.
Warum wird denn etwas an den daten einer Spalte verändert wenn du es nicht willst? Warum kann der verarbeiter nicht die datumswerte belassen? Was genau passiert denn da? Wurde denn die Verarbeitung und deren Folgen (geänderte Feldinhalte) nicht vorher besprochen / festgelegt? Wenn das Datum beim Verarbeiter nur gelesen werden sollte, warum ist es anschließend verändert? Warum sollte ein Geburtsdatum hier geändert (wie oft ändert sich das denn) werden? Das Datum wird ja wohl vom Verarbeiter wenn überhaupt dann nur ausgelesen, oder? Da solltest du ansetzen um erst gar keine unstimmigkeiten aufkommen zu lassen.

Gruß,
Peter
Bitte warten ..
Mitglied: chrislm
07.03.2012 um 15:15 Uhr
da habe ich schon gesucht, aber ich bekomme das Datum nicht richtig dazwischen... denn hinter dem Datum steht noch die Telefonnummer, habe ich oben vergessen in die Kopzeile zu schreiben.
Bitte warten ..
Mitglied: chrislm
07.03.2012 um 15:21 Uhr
also ich bekomme das Datum so zurück : 01.01.0070. es solle je 1970 heißen... überall bei den Jahreszahlen felht mir die 19.
Ich bekomme die daten zurück und hinten drann ist so ein Ampelsystem, diese Ampel baue ich dann in einer neuen CSV nach vorne, erstelle die Datei genau so wie ich sie hingeschickt habe. An den Daten kann ich nicht viel tun, das ist ein externes Unternehmen was die Daten überprüft.
Bitte warten ..
Mitglied: Pjordorf
07.03.2012 um 15:37 Uhr
Hallo,

Zitat von chrislm:
also ich bekomme das Datum so zurück : 01.01.0070. es solle je 1970 heißen... überall bei den Jahreszahlen felht mir die 19.
Ja, und dafür sind aber Zwei nullen zuviel drin. Das Jahr 0070 hat es schon gegeben wenn wir das die Jahreszahl grundsätzlich 4 stellig schreiben. Wenn du als Datumswert ein 01.01.1970 hinschickst und ein 01.01.0070 zurückbekommst, dann ...

An den Daten kann ich nicht viel tun, das ist ein externes Unternehmen was die Daten überprüft.
Zeig mir mal das Unternehmen wo ich ungefragt CSV Dateien hinschicken kann, diese werden be/verarbeitet und ich bekomme diese geänderten Daten dann als CSV wieder zurück. Ihr werdet schon irgendeinen Vertrag oder sonstwas haben was dieses regelt. Und wenn dieses Externe Unternehmen seine Arbeit / Dienstleistung nicht korrekt erfüllt dann .... Nach deiner Aussage ist also dieses Externe Unternehmen Schuld an dein Problem und du hast es wohl auch so nicht mit denen abgesprochen / vereinbart.

Gruß,
Peter
Bitte warten ..
Mitglied: TsukiSan
07.03.2012 um 15:43 Uhr
überall bei den Jahreszahlen felht mir die 19
Wenn es als sicher gilt, dass alle im 20ten Jahundert geboren worden und immer die 00 durch die 19 ersetzt werden soll, dann ist es einfach mit VBS und REPLACE. Man muss nur aufpassen, dass andere Daten - wie Telefonnummern oder Adressen - nicht auch 00 enthalten!

Gruss
Tsuki
Bitte warten ..
Mitglied: chrislm
07.03.2012 um 16:17 Uhr
OK, dann lassen wir das ganze. Dann ist das doch mehr aufwand als die Sache wert ist. Ich lasse die Datei per batch erzeugen, wegschicken und holen. Deswegen ist es schade wenn alles soweit reibungslos funktioniert bisauf die eine kleinigkeit. dort. Oder, ich sende das datum nur mit jahreszahlen, ohne das jahhundert. Dann passt es auch wieder...


Trozdem allen vielen dank an alle die sich meinetwegen das Hirn zermartert haben...
Bitte warten ..
Mitglied: TsukiSan
08.03.2012 um 03:47 Uhr
Hallo chrisIm,

du gibst aber schnell auf

Nein, was wir nur versuchen zu vermitteln ist, dass das Problem bei jemanden liegt, der dir die Daten so verändert, dass du die Arbeit zum Schluss wieder damit hast. Du zerbrichst dir nun den Kopf, wie Du das wieder gerade bügeln kannst.
Von daher haben wir versucht, dir einige einfache und sehr schnelle Möglichkeiten aufzuzeigen.
Man kann deine CSV-Datei auch mit dem Wordpad öffnen, dann Tastenkombination STRG+H eingeben und dann 00 ersetzen durch 19 meinetwegen. Aber eventuell gibt es jemanden, der in dieser Liste nach 2000 geboren worden ist. Dann muss das schon wieder geändert werden.

Also, ich will's gar nicht zu lang machen und dir mal ein Beispiel-Code in VBS zeigen.
Ich habe deine Infos genommen bezüglich Aufbau der CSV-Dateien (vorher/nachher).
Ich gehe davon aus, dass das Geburtstagsdatum immer in der "letzten" Spalte steht!
01.
Dim FSO 
02.
Dim DatenVorher , DatenNachher , DatenZumSchluss 
03.
 
04.
Const CSV_vorher_Datei ="CSV_Before.csv" 
05.
Const CSV_nachher_Datei ="CSV_After.csv" 
06.
Const CSV_zumSchluss_Datei ="CSV_Fertig.csv" 
07.
 
08.
SET FSO = CreateObject("Scripting.FileSystemObject") 
09.
 
10.
DatenVorher = Split(FSO.OpenTextFile(CSV_vorher_Datei).ReadAll,vbcrlf) 
11.
DatenNachher = Split(FSO.OpenTextFile(CSV_nachher_Datei).ReadAll,vbcrlf) 
12.
 
13.
For i = 1 to (Ubound(DatenVorher) - 1) 
14.
	tempV = Split(DatenVorher(i),";") 
15.
	tempN = Split(DatenNachher(i),";") 
16.
	tempN(Ubound(tempN)) = Replace(tempN(Ubound(tempN)),tempN(Ubound(tempN)),tempV(Ubound(tempV))) 
17.
	DatenZumSchluss = DatenZumSchluss & Join(tempN,";") & vbcrlf 
18.
Next 
19.
 
20.
FSO.CreateTextFile(CSV_zumSchluss_Datei).Write DatenZumSchluss 
21.
 
22.
Set FSO = Nothing
Aber Vorsicht!
Der Code funktioiert nur, wenn...... Genau! Da gäbe es noch zu viele Wenn(s) und Aber(s)
Ansonsten könnte es unter Umständen sein, dass jemand an einem anderen Tag Geburtstag hat ganz plötzlich und und und..


Schau es dir mal an und dann überlege dir wirklich, ob es Sinn macht, da selber Geist reinzustecken in dein Vorhaben oder ob es doch nicht besser und einfacher ist, demjenigen auf die Finger zu (sc)hauen, der dir das verbockt

Gruss
Tsuki
Bitte warten ..
Mitglied: it-frosch
10.03.2012 um 14:59 Uhr
Hallo chrislm,

du kannst auch via Makrorecorder und Text in Spalten die 01.01.0070 nach 6 Stellen trennen, die 0070 in eine Zahl umformen und 1900 dazuaddieren.

Das ganze machst du einmal manuell, läßt den Macrorecorder mitlaufen und speicherst das Ganze dann als Makro XY ab.

grüße vom it-frosch
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Bestimmte Spalten aus TXT in CSV kopieren - ab Spalte AE gibt es Übertragungsfehler (9)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
String aus Spalte in csv auslesen und ersetzen (4)

Frage von mIsSteR zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Excel Makro zum Suchen von Spalten und exportieren in CSV (3)

Frage von Raptox zum Thema VB for Applications ...

Neue Wissensbeiträge
Humor (lol)

Wo ist der Fehler auf dem Bild?

(15)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows Update

Offenbar erneutes MS-Update mit Fehlerschleife (2012 R2)

Information von VGem-e zum Thema Windows Update ...

Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Lizenzierung
Programm soll in verschiedenen Versionen lizenziert sein (20)

Frage von Yanmai zum Thema Lizenzierung ...

Windows Installation
Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen (14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Microsoft Office
Access Hilfe benötigt (13)

Frage von DieAzubinne zum Thema Microsoft Office ...

Windows Userverwaltung
Ordner-Rechte für Dom.Admin einschränken? (13)

Frage von kilobyte zum Thema Windows Userverwaltung ...