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

POWERSHELL txt auslesen mit csv oder mdb abgleichen und zusammen in neue datei schreiben

Frage Entwicklung Batch & Shell

Mitglied: loanna

loanna (Level 1) - Jetzt verbinden

18.01.2015 um 11:35 Uhr, 1408 Aufrufe, 4 Kommentare

Hallo an alle Powersheller,

brauche dringend Hilfe.

Muss als Notlösung ein Script schreiben welches die unten aufgeführten Dinge abfrägt und erledigt, leider habe ich noch nie gescriptet und kann sie allenfalls lesen und es fehlt mir offengestanden auch wohl das analytische Denkvermögen dafür .

Es ist Sonntag und ich habe keinen blassen Schimmer wie ich bis Ende der Woche diese für mich schier unlösbare Aufgabe lösen soll;

AUFGAB Script
1. eine .txt auslesen (MUSTER: Kundennr;Kontonr;Name;Wohnort --> also z. B.: 12356;88888;Nadine Mueller;Berlin)

- dann soll die Kontonnr. (88888) mit einer anderen Datei (CSV oder .mdb, ähnlicher aufbauf wie txt, getrennt durch ";" mit Überschriftspalten) abgefragt werden ob diese dort vorhanden ist
- und wenn ja, dann soll aus dieser csv Datei die restlichen Daten (Geb. Datum; PLZ) ausgelesen werden
- und zusammen mit der betreffenden Zeile aus der txt Datei in eine neue Datei geschrieben werden:

so dass am Schluss das Ergebnis so aussieht:

12356;88888;Nadine Mueller;Neumarkt;160580;92318

dass soll dann Zeile für Zeile mit dem Inhalt der .txt passieren und bestenfalls, soll das endergebnis ein *.in Datei sein, bei welcher jede "Spalte" eine genauz länge von z. B. 15 Zeichen hat.

wenn also eine Spalte aus der CSV leer ist( dann soll dort in der enddatei auch ein Platzhalter von 15 leerzeichen stehen)

das hat den Hintergrund, dass diese *.in Datei anschließend von einer Schnittstelle für ein DMS System genutzt wird und die leeren datensätze natürlich auch als "leer" übergeben werden sollen.
Diese Schnittstelle fragt z. b spaltenweise /zeichenweise ab;
also Zeichen 0 - bis 4 IST Kontonr, 6 - 10 IST Kundennr. usw.

Kann mir jemand Helfen? Ich habe keinerlei Ansatz ich habe versucht mir einzelen google lösungen zusammenzubauen bzw. mich einzulesen aber es ist einfach nicht meins, dieses scripten...

vielen DANK!!!!!!
Mitglied: 114757
18.01.2015, aktualisiert um 11:59 Uhr
Moin,
DOPPELPOSTS mögen wir hier überhaupt nicht ! Also bitte den anderen Thread löschen. Danke.

Gruß jodel32
Bitte warten ..
Mitglied: loanna
18.01.2015 um 12:11 Uhr
anderen Thread gelöscht...sorry bin neu, wusste nicht wo es besser aufgehoben ist, Danke
Bitte warten ..
Mitglied: colinardo
18.01.2015, aktualisiert 19.01.2015
Hallo loanna, Willkommen auf Administrator.de!
Kein Problem, machen wir doch glatt

Also ich gehe jetzt mal davon aus, das sowohl die Textdatei als auch die *.csv-Datei jeweils Spaltenüberschriften haben. Die Ausgabedatei wird in diesem Beispiel ohne Überschriften erstellt.
Die Textdatei wird in Zeile 2 und die CSV-Datei in Zeile 3 angegeben (Bei Bedarf das Encoding der Dateien anpassen). Die Ausgabedatei in Zeile 6. Die Feldbreite kann in Zeile 9 angepasst werden. Alle weiteren Infos findest du in den Kommentaren des Codes. Da ich nicht wusste wie die Daten in den Spalten ausgerichtet werden sollen bin ich einfach mal von einer Rechtsausrichtung der Daten in den Spalten ausgegangen(lässt sich bei Bedarf in Zeile 25 mit Verwendung von padRight anpassen). Ansonsten habe ich mich genau an deine Angaben gehalten.

-edit- Den Fall das ein Wert in einer Spalte größer ist als die max. Feldbreite habe ich noch nicht implementiert da ich nicht wusste wie Ihr das Handhabt (entweder den Wert rechts oder links abschneiden ?). Lässt sich bei Bedarf aber leicht nachrüsten.
01.
# Dateien als Objekte importieren 
02.
$data1 = Import-CSV "C:\data1.txt" -Delimiter ";" -Encoding Default 
03.
$data2 = Import-CSV "C:\data2.csv" -Delimiter ";" -Encoding Default 
04.
 
05.
# Ausgabedatei die erstellt wird 
06.
$FILEOUT = 'C:\data_out.in' 
07.
 
08.
# Feldbreite festlegen 
09.
$FIELDWIDTH = 15 
10.
 
11.
# zwei neue Spalten zum Referenzobjekt hinzufügen 
12.
$data1 | Add-Member -MemberType NoteProperty -Name 'Geb. Datum' -Value '' 
13.
$data1 | Add-Member -MemberType NoteProperty -Name 'PLZ' -Value '' 
14.
 
15.
foreach($line in $data1){ 
16.
    # Suche entsprechende Daten in der zweiten Datei anhand der Kontonr. 
17.
    $result = $data2 | ?{$_.Kontonr -eq $line.Kontonr} 
18.
    # wenn es ein Ergebnis gibt ergänze die Daten von den Spalten 'plz' und 'Geb. Datum' aus der CSV-Datei in der aktuelle Zeile 
19.
    if ($result){ 
20.
        $line.'Geb. Datum' = $result.'Geb. Datum' 
21.
        $line.plz = $result.plz 
22.
23.
    # padding (links) für alle Spalten hinzufügen 
24.
    $data1 | Get-Member -MemberType NoteProperty | %{ 
25.
        $line.($_.Name) = $line.($_.Name).padLeft($FIELDWIDTH,' ') 
26.
27.
28.
# Daten zu CSV-Format konvertieren, die Anführungszeichen ersetzen die dabei normalerweise erstellt werden, Überschriften überspringen und als Datei speichern 
29.
($data1 | convertto-csv -Delimiter ";" -NoTypeInformation | select -skip 1 | out-string).replace('"','') | Set-Content $FILEOUT
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate


Muss als Notlösung ein Script schreiben welches die unten aufgeführten Dinge abfrägt und erledigt, leider habe ich noch nie gescriptet und kann sie allenfalls lesen und es fehlt mir offengestanden auch wohl das analytische Denkvermögen dafür .
p.s. Welchen Fachinformatiker hast du ? Ich hoffe nicht den für "Anwendungsentwicklung"
Bitte warten ..
Mitglied: loanna
23.01.2015 um 09:19 Uhr
weder noch ;)... ich bin mehr oder minder Quereinsteigerin in der Fachadministration ;)
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Datenauslesen und in eine CSV schreiben
gelöst Frage von PrekusBatch & Shell2 Kommentare

Hallo zusammen, ich stehe vor einem kleinem Problem. Unser powershell Pro ist langzeit erkrankt und unser Controller nervt uns ...

Batch & Shell
Werte aus CSV in TXT - Powershell
gelöst Frage von Komoran12Batch & Shell20 Kommentare

Hallo Ihr, ich benötige mal wieder Eure Hilfe,kann mir wer mit einem Code aushelfen? Ich habe eine .csv mit ...

Batch & Shell
Dateinamen mit vbs auslesen und in eine TXT Datei schreiben
gelöst Frage von KeiosIDBatch & Shell5 Kommentare

Hallo, ich hoffe mal, das ist das richtige Unterforum. Nach diversen suchen und Hilfe aus einem Windows Scripting Buch ...

Batch & Shell
Auslesen und Vergleichen Zweiter CSV Dateien Powershell
gelöst Frage von HainoonBatch & Shell7 Kommentare

Hallo zusammen, ich arbeite im Moment an einem Script zum auslesen und vergleichen von Usern in der AD. Das ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 104 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell16 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Hardware
Fujitsu Workstation mit K80 und Quadro P5000, Fehlermeldung: Connect Power Adapter
Frage von MachelloHardware7 Kommentare

Hallo Zusammen, ich benötige euren Rat da ich ratlos bin. Folgende Konfiguration im Büro: Fujitsu Workstation Celcius R940 Power ...