stefanfen
Goto Top

Findstr nur erste Fund

Hallo Leute
Ich habe ein Problem bei dem ich nicht weiterkommen. Ich habe 2 CSV Dateien. Eine in der alle meine Mitgliedernummern (aktive) stehen und eine mit den Mitgliedernummern und weiteren Daten (alledaten).

set "quellordner=C:\club\"  
set "zielordner=C:\club\user\"  
pushd "%quellordner%"  
findstr /ig:"aktive.csv" "alledaten.csv" >"%Zielordner%\fertig.csv"  

mit dem batch bekomme ich alle Mitglieder in eine neue csv die noch aktiv sind. Leider sind in der alledaten.csv die Mitglieder aber teilweise mehrfach drin. Wie kann ich mit findstr mir nur den ersten Fund einer Mitgliedsnummer in die neue Datei schreiben lassen?

Content-Key: 487545

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

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: Kraemer
Kraemer 22.08.2019 um 15:02:28 Uhr
Goto Top
Mitglied: stefanfen
stefanfen 22.08.2019 um 16:48:15 Uhr
Goto Top
Den Beitrag hatte ich schon gesehen. Ich habe es auch mit einem einfachen /ic:"einMitgliedsnummer" hinbekommen aber nicht mit der kompletten CSV Liste und nicht mit einer umleitung in eine neue Datei.
Mitglied: Kraemer
Kraemer 22.08.2019 um 16:53:17 Uhr
Goto Top
Zitat von @stefanfen:

Den Beitrag hatte ich schon gesehen.
ich habe keine Lust auf Ratespielchen*. Ich bin hier raus.
Mitglied: 77559
77559 22.08.2019 um 20:15:08 Uhr
Goto Top
Moin moin,

Mit PowerShell ist das einfacher und genereller lösbar.

Aus diesen Anfangsdaten (nur die Spalte MitgliedsNummer muss übereinstimmen)

C:\Club\alledaten.csv   | C:\Club\aktive.csv
------------------------+-------------------
MitgliedsNummer,Daten   | MitgliedsNummer
1,Daten1                | 1
2,Daten2                |
2,Daten2-2              |
3,Daten3                | 3
3,Daten3-2              |
4,Daten4                |
4,Daten4-2              |
5,Daten5                | 5
5,Daten5-2              |
6,Daten6                |
6,Daten6-2              |
7,Daten7                | 7
7,Daten7-2              |

Erzeugt dieses Script:

## Q:\Test\2019\08\22\AD_487545.ps1
$SrcDir = 'C:\Club\'        
$DstDir = 'C:\Club\User\'   
MD $DstDir -EA 0| Out-Null

$UserAct = Import-Csv -Path (Join-Path $SrcDir 'aktive.csv')  
$UserAll = Import-Csv -Path (Join-Path $SrcDir 'alledaten.csv') |  
    Group-Object MitgliedsNummer | ForEach-Object{$_.Group|Select -First 1}

Compare-Object -Ref $UserAll -Diff $UserAct -Property MitgliedsNummer `
               -PassThru -IncludeEqual -ExcludeDifferent |
    Select-Object * -Exclude SideIndicator |
    Export-Csv -Path (Join-Path $DstDir 'fertig.csv') -NoTypeInformation  

Diese Ausgabedatei:

> Get-Content C:\club\User\fertig.csv
"MitgliedsNummer","Daten"
"1","Daten1"
"3","Daten3"
"5","Daten5"
"7","Daten7"
Mitglied: stefanfen
stefanfen 23.08.2019 um 13:07:03 Uhr
Goto Top
Ich habe den Beitrag dort gelesen und es ja auch so hinbekommen. Das Problem dabei ist einfach das aus meiner "aktive) Liste immer nur die erste Mitgliedsnummer genommen wird. Ich habe aber ja etliche in der Liste und daher funktioniert es nicht.

Wenn du die Lösung dafür kennst wäre ich dir sehr dankbar für deine Mithilfe
Mitglied: stefanfen
stefanfen 23.08.2019 um 13:07:51 Uhr
Goto Top
Klappt supoer aber bei mir wird das die erste Zeile der Aktive Liste verwendet. Dana ist ende.
Mitglied: 77559
77559 23.08.2019 um 21:18:05 Uhr
Goto Top
Zitat von @stefanfen:

Klappt supoer aber bei mir wird das die erste Zeile der Aktive Liste verwendet. Dana ist ende.

In der Kürze und ohne Details verstehe ich nicht was du meinst.

Gruß
LotPings
Mitglied: stefanfen
stefanfen 26.08.2019 um 19:01:57 Uhr
Goto Top
Sry erstmal das ich erst jetzt antworte und vielen Dank für deine Hilfe.

In der einen CSV steht nur die Kundennummer:
34343
34341
34144
etc

in der zweiten CSV stehen
Name;Adresse;PLZ;Ort;Jahr;Kundennummer;Geburtsdatum;Farbe;Punkte

Mit deinem Script bekomme ich nun "nur" einfach die erste Zeile ausgegeben. Was ich brauche ist zu jeder Mitgliedsnummer die erste Zeile die in der Liste vorkommt.
Mitglied: 77559
77559 26.08.2019 um 23:02:42 Uhr
Goto Top
Moin moin,

langsam kann ich Kraemer verstehen,

ich liefere ein detailliertes Sript basierend auf deinen Daten und
zurück kommt von dir eine sehr kurze Antwort mit anderen Details.

Aus Mitgliedernummer wurde eine Kundennummer von der ich nicht weiß wie du das umgesetzt hast,
denn beim Umsetzen hapert es ja offensichtlich.

Gruß
LotPings
Mitglied: Kraemer
Kraemer 27.08.2019 um 08:31:00 Uhr
Goto Top
Zitat von @77559:
langsam kann ich Kraemer verstehen,

🍿