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

Textdatei mit Powershell auslesen und bestimmte Daten in Excel speichern

Mitglied: Pat.bat

Pat.bat (Level 1) - Jetzt verbinden

19.06.2019 um 13:12 Uhr, 316 Aufrufe, 10 Kommentare

Hallo zusammen,

ich habe folgende Schwierigkeit.

Ich hab eine Textdatei, wo pro Zeile ein Datensatz ist. Die erste Zeile sind die Überschriften. geteilt ist das ganze durch mehrere Leerzeichen (immer unterschiedlich lang).

Ich habe mich hier schon durch einige Threads gelesen und unter anderem folgendes ausprobiert:

01.
$csv = Import-Csv "G:\FD_50_Bank\System\Zahllisten\Zahlliste_Einfach.txt" -Delimiter " "
02.

03.
$csv | %{
04.
        Write-Host $_.Aktenzeichen
05.
        }
Resultat:

01.
WARNUNG: Mindestens ein Header war nicht angegeben. Für jeden fehlenden Header wurde ein mit "H" beginnender Standardname verwendet.
02.

03.
Allerdings hat bis jetzt nichts funktioniert. Ich denke, das Problem liegt an den vielen Leerzeichen.

Anbei noch ein Screenshot von der Textdatei:

beispiel_zahlliste - Klicke auf das Bild, um es zu vergrößern


Ich danke euch schonmal für eure Hilfe.
Mitglied: NetzwerkDude
19.06.2019 um 13:39 Uhr
Sieht mir verdächtig nach Tabs aus, versuch mal folgendes:
01.
Import-Csv -Delimiter "`t" 
Bitte warten ..
Mitglied: emeriks
19.06.2019 um 13:39 Uhr
Hi,
enthalten die Daten selbst (die Feldinhalte) auch Leerzeichen (potentiell)? Und falls ja, sind die Feldinhalte dann in "" eingeschlossen?

E.
Bitte warten ..
Mitglied: erikro
19.06.2019 um 14:55 Uhr
Moin,


Zitat von emeriks:
enthalten die Daten selbst (die Feldinhalte) auch Leerzeichen (potentiell)? Und falls ja, sind die Feldinhalte dann in "" eingeschlossen?

Auf dem Bild sieht das so aus wie ja und nein. Aber das Trennzeichen wird schon ein TAB sein, so wie das aussieht.

Liebe Grüße

Erik
Bitte warten ..
Mitglied: Kraemer
19.06.2019 um 15:17 Uhr
Zitat von erikro:
Auf dem Bild sieht das so aus wie ja und nein. Aber das Trennzeichen wird schon ein TAB sein, so wie das aussieht.
oder feste Breite, wie das .txt vermuten lässt
Bitte warten ..
Mitglied: Pat.bat
19.06.2019 um 15:55 Uhr
Die Leerzeichen bestehen aus mindestens einem TAB und je nach Abstand zwischen den Spalten aus einer unterschiedlichen Anzahl von Leerzeichen. Fragt mich bitte nicht, mit welcher Logik das Ausgabeprogramm diese Datei erzeugt.

Zum Beispiel haben wir zwischen der "Spalte" zuständiger Sachbearbeiter und der Spalte Verwendungszweck 11 Leerzeichen und ein TAB (Die Anzahl der Leerzeichen unterscheiden sich je nach länge des Namen).

Zwischen dem Aktenzeichen und der Buchungsnummer befindet sich 4 Leerzeichen und zwischen Betrag und Aktenzeichen ein TAB.

Vll gibt es die Möglichkeit, das wenn mehr als ein Leerzeichen, dann lösche alle leerzeichen und TABs bzw Trenne es danach. :S

Danke schomal für den tollen Input hier
Bitte warten ..
Mitglied: colinardo
19.06.2019, aktualisiert um 16:58 Uhr
Zitat von Pat.bat:

Die Leerzeichen bestehen aus mindestens einem TAB und je nach Abstand zwischen den Spalten aus einer unterschiedlichen Anzahl von Leerzeichen.
Wäre für uns einfacher wenn du einfach einen Originalausschnitt in Codetags posten würdest statt einem Bild, dann hätten wir es exakt hier vorliegen und müssten nicht in der Gegend rum raten.

Mangels Originalvorlage nach deinen Vorgaben klappt z.B. das hier:
01.
$csv = ((gc 'G:\FD_50_Bank\System\Zahllisten\Zahlliste_Einfach.txt') -replace '^\s+','' ) -replace ' *\t *',';' | convertfrom-csv -Delimiter ";"
02.
$csv
Grüße Uwe
Bitte warten ..
Mitglied: erikro
19.06.2019 um 16:39 Uhr
Moin,

Zitat von Pat.bat:
Die Leerzeichen bestehen aus mindestens einem TAB und je nach Abstand zwischen den Spalten aus einer unterschiedlichen Anzahl von Leerzeichen. Fragt mich bitte nicht, mit welcher Logik das Ausgabeprogramm diese Datei erzeugt.

Zum Beispiel haben wir zwischen der "Spalte" zuständiger Sachbearbeiter und der Spalte Verwendungszweck 11 Leerzeichen und ein TAB (Die Anzahl der Leerzeichen unterscheiden sich je nach länge des Namen).

Dann lässt sich das relativ einfach lösen:

01.
$csv = Import-Csv test.csv -delimiter "`t"
02.

03.
foreach($dataset in $csv) {
04.
    export-csv -inputObject $dataset -path testneu.csv -delimiter ";" -Encoding utf8 -append -NoTypeInformation
05.
}
Datei vorher:
01.
Überschrift 1	Überschrift 2	Überschrift 3
02.
Inhalt1	        Inhalt2	        Inhalt3
03.
Inhalt1	        Inhalt2	        Inhalt3
04.
Inhalt1	        Inhalt2	        Inhalt3
05.
Inhalt1	        Inhalt2	        Inhalt3
06.
Inhalt1	        Inhalt2	        Inhalt3
und hinter

01.
"Überschrift 1";"Überschrift 2";"Überschrift 3"
02.
"Inhalt1";"Inhalt2";"Inhalt3"
03.
"Inhalt1";"Inhalt2";"Inhalt3"
04.
"Inhalt1";"Inhalt2";"Inhalt3"
05.
"Inhalt1";"Inhalt2";"Inhalt3"
06.
"Inhalt1";"Inhalt2";"Inhalt3"
Getestet mit Leerzeichen vor, hinter oder vor und hinter dem TAB.

hth

Erik
Bitte warten ..
Mitglied: colinardo
19.06.2019, aktualisiert um 16:57 Uhr
Getestet mit Leerzeichen vor, hinter oder vor und hinter dem TAB
Bei einem Tab direkt nach der Spalte und folgenden Leerzeichen OK, stehen aber Leerzeichen vor dem Tab bleibt mindestens 1 Leerzeichen am Ende der Zelle zurück, er müsste also die Daten der Zellen noch mit Trim() bearbeiten wenn das für Ihn relevant ist.
Bitte warten ..
Mitglied: erikro
19.06.2019, aktualisiert um 16:58 Uhr
Moin,

Zitat von colinardo:

Getestet mit Leerzeichen vor, hinter oder vor und hinter dem TAB.
Bei einem Tab direkt nach der Spalte und folgenden Leerzeichen OK, stehen aber Leerzeichen vor dem Tab bleibt mindestens 1 Leerzeichen am Ende der Zelle zurück, er müsste also die Daten noch mit Trim() bearbeiten.

Nur wenn die Daten auch ein Leerzeichen enthalten. Das habe ich auch gerade gemerkt. So funktioniert es in allen Fällen:

01.
$csv = Import-Csv test.csv -delimiter "`t"
02.

03.
foreach($dataset in $csv) {
04.
    foreach($key in $dataset.keys) {
05.

06.
        $dataset[$key] = $dataset[$key].trim()
07.

08.
    }
09.
    export-csv -inputObject $dataset -path testneu.csv -delimiter ";" -Encoding utf8 -append -NoTypeInformation
10.
}
Liebe Grüße

Erik
Bitte warten ..
Mitglied: colinardo
19.06.2019, aktualisiert um 17:33 Uhr
Das -append für jede Datenzeile kannst du dir noch sparen wenn du das Objekt als ganzes pipest, macht das ganze nur unnötig langsam und führt zu unnötig vielen Schreibzugriffen.

p.s. Das Datenobjekt hat keine "Keys" Collection und somit führt das nicht zum entsprechenden Ergebnis.
Wenn du es so in der Art machen willst bspw. :
01.
$csv = Import-Csv test.csv -delimiter "`t"
02.
$members = $csv | gm -MemberType NoteProperty | select -Expand Name
03.
$csv | %{
04.
    foreach($m in $members){
05.
        $_.$m = $_.$m.trim()
06.
    }
07.
}
08.
$csv | export-csv -path testneu.csv -delimiter ";" -NoType -Encoding utf8
Trotzdem hat das immer noch den Nachteil wenn in den Überschriften vor dem Tab Leerzeichen stehen, dann haben die Membernamen nämlich ebenfalls Leerzeichen in den Bezeichnungen! Das musst du bei dieser Variante bedenken und vor dem Einlesen mit Import-CSV behandeln oder die Objekte ändern, deswegen würde ich es gleich so abfackeln:
01.
((gc 'G:\FD_50_Bank\System\Zahllisten\Zahlliste_Einfach.txt') -replace '^\s+','' ) -replace ' *\t *',';' | convertfrom-csv -Delimiter ";" | export-csv -path 'G:\FD_50_Bank\System\Zahllisten\Zahlliste_Einfach_NEU.csv' -delimiter ";" -Encoding utf8 -NoType
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell excel
gelöst Frage von Crank69Batch & Shell6 Kommentare

Hallo Leute, ich habe in meinem Script leider 3 Probleme und hoffe das ihr mir helfen könnt. würde ich ...

Batch & Shell
PowerShell Array in Textdatei ausgeben
gelöst Frage von derhoeppiBatch & Shell2 Kommentare

Hallo, der Titel hört sich nicht allzu schwer an. Ich habe eine Foreach Schleife die Durchläuft und ein Array ...

Batch & Shell
Powershell für excel
gelöst Frage von Crank69Batch & Shell9 Kommentare

Hallo ich benötige hilfe bei Powershell leider bin ich noch neu im Programmieren und würde mich freuen wenn ihr ...

IDE & Editoren

UltraEdit: Textdatei für Excel aufbereiten

gelöst Frage von newbie58IDE & Editoren12 Kommentare

Hallo, ich habe eine Textdatei (Ausschnitte aus einem NC-Programm) die wie folg aussieht: 5112281 ; NC_JOB: 30001 VORFRAESEN AUSLASSSEITE ...

Neue Wissensbeiträge
Windows Update
Sicherheitsupdate für SQL Server 2014 SP3
Information von sabines vor 1 TagWindows Update2 Kommentare

Für den SQL Server 2014 existiert ein Sicherheitsupdate. Laut KB Artikel wird es als CU3 angezeigt: Server 2014 SP3 ...

Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 2 TagenBackup1 Kommentar

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 3 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 steht in Englisch bereit mit Unterstützung für Windows 10 1903 (May Update)

Information von VGem-e vor 4 TagenSicherheits-Tools1 Kommentar

Moin Kollegen, Dann kommt wohl demnächst auch die deutschsprachige/europäische Version zur Auslieferung. Gruß VGem-e

Heiß diskutierte Inhalte
Windows Server
Windows Server 2016 einrichten
Frage von borjiaWindows Server34 Kommentare

Ich würde gerne einen Server einrichten, erstmal nur mit DNS und AD. Habe mich die letzten Wochen durch diverse ...

Google Android
Anbieter für Diensthandys
Frage von Pat.batGoogle Android25 Kommentare

Hallo zusammen, ich bin seit einiger Zeit zuständig für die Diensthandys bei uns in der Behörde. Eine Management Software ...

Netzwerkgrundlagen
Neue Serverumgebung von 0 aufbauen
Frage von JacareNetzwerkgrundlagen19 Kommentare

Hallo zusammen, ich bin noch nicht lange hier und weiß nicht, ob meine Frage daher etwas ungewöhnlich ist. Ich ...

Windows Server
Verbindunsproblem zwischen Klient und Wsus-Server
Frage von flashgordon78Windows Server16 Kommentare

Liebe Forum Besucher! Ich habe ein Wsus_Server (Win Server 2016) erstellt und die Update sind herunterladen worden. Aber ich ...