77575
Goto Top

unterschiedliche string in csv löschen

hallo,

ich exportiere mit dem tool csvde die benutzer einer domäne in eine csv datei, diese daten werden f. ein anderes system zum importieren genutzt.
leider gibt das tool auch immer die OU container mit aus. diese muss ich nun löschen.

hier mal ein paar bsp. zeilen.
"CN=Mustermann Max,OU=Benutzer,DC=Firma,DC=DE",Max,Musterann,Berlin,Marketing,maxmustermann@firma.de
"CN=Sorglos Anita,OU=Benutzer,DC=Firma,DC=DE",Anita,Sorglos,Berlin,Finanzbuchlatung,anita.sorglos@firma.de
"CN=Meier Otto,OU=Benutzer,DC=Firma,DC=DE",Otto,Meier,München,Sales,Otto.Meier@firma.de
usw.

Ich muss jetzt alles löschen was zwischen den beiden Anführungszeichen steht, inklusive der Anführungszeichen und des darauffolgendem komma, also zum beispiel in der erstenzeile den Text
"CN=Mustermann Max,OU=Benutzer,DC=Firma,DC=DE",

Bei vb script gibt es ja die funktion replace, nur nützt mir die in meinem fall nichts, weil der string der ersetzt werden soll in jeder zeile anders ist.
wenn man das ganze auch mit batch realisieren könnte wäre es super.
hab mir mal delims angeschaut aber komme nicht damit klar.

gruss 01-01-01

Content-Key: 120296

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

Printed on: April 26, 2024 at 10:04 o'clock

Member: Berrnd
Berrnd Jul 12, 2009 at 18:41:45 (UTC)
Goto Top
Hi,

für solche Dinge kann ich Dir den EmEditor empfehlen. Der bietet ziemlich umfangreiche "Suche & Ersetze" Möglichkeiten.
(siehe: http://emeditor.com)

Gruß
Bernd
Mitglied: 77575
77575 Jul 12, 2009 at 18:45:01 (UTC)
Goto Top
Zitat von @Berrnd:
Hi,

für solche Dinge kann ich Dir den EmEditor empfehlen. Der bietet
ziemlich umfangreiche "Suche & Ersetze"
Möglichkeiten.
(siehe: http://emeditor.com)

Gruß
Bernd

hallo,

das ganze muss über ein script laufen.

gruss 01-01-01
Mitglied: 76109
76109 Jul 12, 2009 at 18:57:54 (UTC)
Goto Top
Hallo 01-01-01!

Das sollte funktionieren:
Const iPath = "F:\$Scripts\Test\Import.CSV"  
Const ePath = "F:\$Scripts\Test\Export.CSV"  

Dim Fso, iFile, eFile, Text

Set Fso = CreateObject("Scripting.FileSystemObject")  
Set iFile = Fso.OpenTextFile(iPath)
Set eFile = Fso.CreateTextFile(ePath)
    
Do Until iFile.AtEndOfStream
    Text = Split(iFile.ReadLine, """")  
    If UBound(Text) = 2 Then eFile.WriteLine Mid(Text(2), 2)
Loop

iFile.Close:  eFile.Close

MsgBox "Der Exportvorgang ist beendet!", vbInformation, "Meldung"  

Gruß Dieter
Member: Biber
Biber Jul 12, 2009 at 19:21:32 (UTC)
Goto Top
Moin 01-01-01,


unabhängig davon, dass wir hier sicherlich eine Batch/VBS/whatever-Lösung finden werden,
ich exportiere mit dem tool csvde die benutzer einer domäne ...
  • und wer zwingt Dich dann, das OU-Feld mit rauszulutschen?
diese daten werden f. ein anderes system zum importieren genutzt.
  • und wer zwingt dieses Tool, alle Felder in der CSV-Datei zu nutzen?

In meiner Jugend war dieses CSV-Format so beliebt, weil wir damals bei jedem Import sagen konnten:
"Nimm nur Felder 1, 3, 7 und 10, aber bitte in der Reihenfolge Feld1, Feld7, Feld10 und dann Feld3"

Ist so etwas mit dieser neumodischen Manymany-Kernels-Architektur heute nicht mehr möglich?

Grüße
Biber
Mitglied: 76109
76109 Jul 12, 2009 at 19:42:38 (UTC)
Goto Top
Hallo Biber!

Zitat von @Biber:
In meiner Jugend war dieses CSV-Format so beliebt, weil wir damals
bei jedem Import sagen konnten:
"Nimm nur Felder 1, 3, 7 und 10, aber bitte in der
Reihenfolge Feld1, Feld7, Feld10 und dann Feld3"


In meiner Jugend gab es noch kein Excel, aber heute geht das noch mit der Textimportfunktionface-smile

Gruß Dieter
Member: Biber
Biber Jul 12, 2009 at 21:03:29 (UTC)
Goto Top
Moin didi1954,
<OT>
Zitat von @76109:
In meiner Jugend gab es noch kein Excel...
Ich nehme ja die Redmonder in Schutz, wo und wann auch immer ich kann.
Aber die Erfindung des CSV-Formats geht nicht auf deren PraktikantInnenkonto.
Woran sie allerdings (vor allem durch Excel) verantwortlich sind ist, dass durch den jahrelangen Excel-Quasi-Standard die comma separated values-Dateien im Allgemeinen semicolon separated gemeint sind, wenn jemand eine CSV-Datei für Import/Export plant.

Aber wenn 01-01-01 doch mit dem Zielsystem "Excel" gemeint hätte, dann würde er doch ohnehin "Jose" für AD-Abfragen verwenden, oder?
</OT>

Grüße
Biber
Mitglied: 77575
77575 Jul 13, 2009 at 11:24:12 (UTC)
Goto Top
Zitat von @Biber:
...
  • und wer zwingt Dich dann, das OU-Feld mit rauszulutschen?
das tool selbst. ich habe noch keinen schalter gefunden der die OU struktur weglässt, sollte es einen geben, wäre ich dankbar für den hinweis

Zitat von @Biber:
> diese daten werden f. ein anderes system zum importieren
genutzt.
  • und wer zwingt dieses Tool, alle Felder in der CSV-Datei zu
nutzen?
darauf habe ich keinen einfluss.
Mitglied: 77575
77575 Jul 13, 2009 at 11:40:03 (UTC)
Goto Top
hi didi1954,

das funktioniert auch ganz gut. nur die export datei hat ein binäres format.
wenn ich es mit ultraedit öffne, zeigt es mir als binär datei an. wenn ich es mit notepad öffne, zeigt er es mir mir je einem space zwischen jedem zeichen an.
bekommt man das erste komma auch noch weg?
das output sieht so aus:
, M a x , M u s t e r a n n , B e r l i n , M a r k e t i n g , m a x m u s t e r m a n n @ f i r m a . d e

Gruss 01-01-01
Mitglied: 77575
77575 Jul 13, 2009 at 11:49:41 (UTC)
Goto Top
Zitat von @Biber:
Aber wenn 01-01-01 doch mit dem Zielsystem "Excel" gemeint
hätte, dann würde er doch ohnehin "Jose" für
AD-Abfragen verwenden, oder?

>/OT>
Grüße
Biber


hi , mit jose bekomme ich eine schöne html seite raus, wie bekomme ich damit ein komma separiertes ergebniss?
das system f. den import ist mir nichzt bekannt.

gruss 01-01-01
Member: Biber
Biber Jul 13, 2009 at 12:40:49 (UTC)
Goto Top
Moin 01-01-01,

damit Du erstmal eine funktionierende Lösung bekommst.

Die beiden Methoden [FileSystemObject.]OpenTextfile() und .CreateTextFile() kennen jeweils noch einen Parameter für Textdateien im Unicodeformat.

Wenn Du die INPUT-Datei als als Unicode lesen willst
Set iFile =Fso.OpenTextFile(iPath, , , -1) ' 4.Parameter Tristatetrue auf (-1) setzen -->Unicode
bzw die Ergebnisdatei als ASCII (bzw. nicht Unicode) wegschreiben willst
Set eFile = Fso.CreateTextFile(ePath, , FALSE) ' 3.Parameter TRUE = unicode; FALSE ist DEFAULT

Deine anderen Antworten bzw Rückfragen habe ich gelesen, aber hab momentan keine Zeit dafür.
.
Grüße
Biber
Member: wuehlaz
wuehlaz Jul 13, 2009 at 13:03:55 (UTC)
Goto Top
hmpf also wenn ich in meine ad console gehe und auf benutzer einen rechtsklick mache erscheint dort "liste exportieren".

er exportiert mir dann alle angezeigten spalten (kann man sich in der ansicht auswählen) in eine csv datei ohne ou.

und die geht wunderbar im excel öffnen und dort steht dann zb:

Mustermann,Gruppe,Abteilung,

Mehr Spalten lasse ich bei mir nicht anzeigen.

kannst auch mal das programm Hyena testen. damit arbeiten wir zb.

lg
Mitglied: 77575
77575 Jul 13, 2009 at 14:04:19 (UTC)
Goto Top
hi didi1954,

das funktioniert auch ganz gut. nur die export datei hat ein binäres format.
wenn ich es mit ultraedit öffne, zeigt es mir als binär datei an. wenn ich es mit notepad öffne, zeigt er es mir mir je einem space zwischen jedem zeichen an.
bekommt man das erste komma auch noch weg?
das output sieht so aus:
, M a x , M u s t e r a n n , B e r l i n , M a r k e t i n g , m a x m u s t e r m a n n @ f i r m a . d e

Gruss 01-01-01
Mitglied: 77575
77575 Jul 13, 2009 at 14:05:46 (UTC)
Goto Top
Zitat von @wuehlaz:
hmpf also wenn ich in meine ad console gehe und auf benutzer einen
rechtsklick mache erscheint dort "liste exportieren".

er exportiert mir dann alle angezeigten spalten (kann man sich in der
ansicht auswählen) in eine csv datei ohne ou.

und die geht wunderbar im excel öffnen und dort steht dann zb:

Mustermann,Gruppe,Abteilung,

Mehr Spalten lasse ich bei mir nicht anzeigen.

kannst auch mal das programm Hyena testen. damit arbeiten wir zb.

lg


ja alles schön und gut, aber ich muss es automatisiert machen, den es handelt sich nicht nur um eine OU.
Mitglied: 77575
77575 Jul 13, 2009 at 16:45:17 (UTC)
Goto Top
hallo,

dank didi und biber hab ich das ganze jetzt passend.
hier der code.
Const iPath = "D:\tmp\test\import.csv"  
Const ePath = "D:\tmp\test\Export.csv"  

Dim Fso, iFile, eFile, Text

Set Fso = CreateObject("Scripting.FileSystemObject")  
Set iFile = Fso.OpenTextFile(iPath,,,-1)
Set eFile = Fso.CreateTextFile(ePath,,FALSE)
    
Do Until iFile.AtEndOfStream
    Text = Split(iFile.ReadLine, """")  
    If UBound(Text) = 2 Then eFile.WriteLine Mid(Text(2), 2)
Loop

iFile.Close:  eFile.Close

Vielen Dank nochmal

gruss 01-01-01
Member: Biber
Biber Jul 13, 2009 at 17:11:43 (UTC)
Goto Top
Moin 01-01-01,

okay, wenn Du jetzt zumindest eine mögliche Lösungsvariante sicher hast,
dann kann ich etwas entspannter mein "ja, aber.." formulieren.

Ich habe gerade nach einer relativ uninspirierten Suchmaschinenbefragung ("cvsde syntax") und dreimal Klicken
beispielsweise die (Schritt-für-Schritt-Her)Anleitung CSVDE Export user Accounts gefunden.

Dort wird an einer Stelle, die der Leser/die Leserin nach ca 17sec stressfrei erreicht als ein Beispiel für einen Nur-5-für-mich-wichtige-Felder-Export hergeleitet:

Command: CSVDE -f export4.csv -r objectClass=user -l "DN, objectclass, givenName, sn, name"

Ich denke also (nach wie vor), dass mit einem kurzen 5-Minuten-Mittagspausen-Rumgugeln die ganze Klamotte auch
  • ohne Zwischen-CSV-Dateien und
  • ohne "Do until ( Kunde.AtEndOfStream or nerven =BLANK)"
lösbar ist.

Grüße
Biber
Mitglied: 77575
77575 Jul 13, 2009 at 17:24:16 (UTC)
Goto Top
hi biber,
die seite kenne ich auch.
ich habe es trotzdem nicht geschafft mein csv output ohne die CN/OU container zu exportieren.
das ist mein csvde kommando:
csvde -m -n -u -f "%tmpPath%\munich.csv" -d "OU=Benutzer,OU=Berlin,DC=Firma,DC=de" -r "(|(&(objectClass=user)))" -l givenName,sn,mail,department,physicalDeliveryOfficeName

csvde gibt trotzdem die CN/OU/DC mit aus. ausserdem wird komischweise immer erst der nachname der standort und dann der nachname ausgegeben, egal in welcher reihenfolge ich die ldap felder angebe.

deshalb habe ich ja nach einer lösung gesucht.

gruss 01-01-01
Mitglied: 76109
76109 Jul 14, 2009 at 10:00:27 (UTC)
Goto Top
Hallo zusammen!

Sorry, hatte gestern leider keine Zeit und einen miesen Tag dazu.

OP-Termin Uni-Klinik-Heidelberg und heftiger Autoschaden. Auf dem Klinikgeländere ca 500m vorm Ziel, bin ich wegen einer Diesel-Spur eines Verkehrsbusses in einer Kurve geradeaus gefahren. Das Problem dabei, es ging nur nach Rechts oder Linksface-smile Hoffe bloß, dass die Verkehrsbetriebe den Schaden übernehmen, sonst wird's sehr sehr Teuerface-sad

@Biber

Danke für's Einspringen.

Gruß Dieter
Member: Biber
Biber Jul 14, 2009 at 10:30:50 (UTC)
Goto Top
Moin didi1954,

<OT>
Verkehrsbetriebe sind da ja sehr kulant - die werden einen Sachverständigen auf das ansetzen, was gestern noch Dein Auto war, und falls ein eingerasteter Blinkhebel Deinen Rechts-oder-Links-Abbiegewillen hinreichend dokumentiert, dann hast du Chancen.
Du hast doch geblinkt, oder...?

Wie dem auch sei, auch wenn es nicht klappen sollte
Deine Geradlinigket erkennen wir auf jeden Fall an... face-wink

</OT>

Grüße
Biber
Mitglied: 76109
76109 Jul 14, 2009 at 11:33:48 (UTC)
Goto Top
Hallo Biber!

Danke für Deine aufmunternten Worteface-smile

Na, selbstverständlich habe ich geblinktface-smile Aber ich musste ja die vielbefahrene Zufahrtsstraße freimachen. Und außer meinem Auto, ist ja nix beschädigt, da lediglich ein hoher Bordstein im Weg war, der mir das rechte Vorderrad zerfetzt, Rahmenteile geknickt, das Lenkgestänge und sonstige Teile ein paar Zentimenter nach innen verschoben hat. Nach einem Radwechsel bin auch noch ins Parkhaus und Heute wieder ganz vorsichtig nach Hause gefahren.

Die Polizei war da und die Feuerwehr hatte auch schon Bescheid gewusst, aber noch nichts unternommen. Keine Schilder aufgestellt oder sonstiges. Erst nachdem die Polizei nachgehakt hat, wurde die Straße über mehrere Hundert Meter gereinigt. Und die Polizei war es auch, die den Verursacher ermittelt und gesagt hat, dass mir der Schaden, WENN ICH GLÜCK HABE, von den Verkehrsbetrieben ersetzt wird. Morgen lass ich mir mal einen Kostenvoranschlag machenface-sad und bin auf das Ergebniss sehr gespannt????

Gruß Dieter