Durch PS erstellte Leerzeile entfernen bzw Verhindern
Hallo zusammen,
ich bearbeite eine CSV Datei mit Powershell. Ich muss die Trennzeichen ändern.
jetzt hab ich aber das Problem das er mir am ende eine leere zeile mit einfügt:
https://prnt.sc/DErWjcDcJzoj
ich kriege die aber ums verrecken nicht weg.. Hoffe mir kann dabei jemand helfen
ich bearbeite eine CSV Datei mit Powershell. Ich muss die Trennzeichen ändern.
# Aktuelles Datum und Uhrzeit im Format 'yyyyMMddHHmmss' generieren
$zeitstempel = Get-Date -Format 'yyyyMMddHHmmss'
# Dateipfad zur CSV-Datei festlegen
$csvDatei = "S:\Bestandsupload\Channel21\Stock\Channel21.csv"
# Neuen Dateinamen erstellen
$neuerDateiname = "S:\Bestandsupload\Channel21\Stock\channel21shop_gasper_"+$zeitstempel+"_Stock2.csv"
# CSV-Datei einlesen und die Trennzeichen ändern
$inhalt = Get-Content -Path $csvDatei
$inhalt = $inhalt -replace ';', '|'
# Inhalt in die neue Datei speichern
$inhalt | Set-Content -Path $neuerDateiname
# Ursprüngliche CSV-Datei löschen (optional)
#Remove-Item -Path $csvDatei
jetzt hab ich aber das Problem das er mir am ende eine leere zeile mit einfügt:
https://prnt.sc/DErWjcDcJzoj
ich kriege die aber ums verrecken nicht weg.. Hoffe mir kann dabei jemand helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7948564929
Url: https://administrator.de/forum/durch-ps-erstellte-leerzeile-entfernen-bzw-verhindern-7948564929.html
Ausgedruckt am: 22.12.2024 um 11:12 Uhr
7 Kommentare
Neuester Kommentar
Moin.
Parameter -NoNewline
Oder
Das so zu ersetzen ist aber nicht sicher denn die Trennezeichen können ja auch im Inhalt stehen. Besser so:
Gruß siddius
Parameter -NoNewline
(Get-Content -Path $csvDatei -Raw) -replace ';','|' -replace '\s+$' | Set-Content $neuerDateiname -NoNewline
$inhalt = (Get-Content -Path $csvDatei -Raw) -replace ';', '|' -replace '\s+$'
[IO.File]::WriteAllText($neuerDateiname,$inhalt)
Das so zu ersetzen ist aber nicht sicher denn die Trennezeichen können ja auch im Inhalt stehen. Besser so:
# Aktuelles Datum und Uhrzeit im Format 'yyyyMMddHHmmss' generieren
$zeitstempel = Get-Date -Format 'yyyyMMddHHmmss'
# Dateipfad zur CSV-Datei festlegen
$csvDatei = "S:\Bestandsupload\Channel21\Stock\Channel21.csv"
# Neuen Dateinamen erstellen
$neuerDateiname = "S:\Bestandsupload\Channel21\Stock\channel21shop_gasper_${zeitstempel}_Stock2.csv"
# CSV-Datei einlesen und die Trennzeichen ändern
$inhalt = (Import-CSV $csvDatei -Delimiter ";" | ConvertTo-CSV -Delimiter "|" -NoTypeInformation | out-string) -replace '\s+$'
[IO.File]::WriteAllText($neuerDateiname,$inhalt)
Moin,
Gruß Thomas
Zitat von @7907292512:
Ab Powershell 7 gibt es alternativ auch den Parameter -NoNewLine im CMDLet Set-Content
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
den gibt's in 5.1 auch schon. https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...Ab Powershell 7 gibt es alternativ auch den Parameter -NoNewLine im CMDLet Set-Content
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
Gruß Thomas
Stimmt, vollkommen vergessen .
Zitat von @Springstil:
Danke für die Anhaltspunkte. Das klappt soweit, zumindest das er keine weitere zeile hinzufügt wenn es keine gibt. nun fällt mir aber auf das die Wawi diese zeile aber schon schreibt. Wie kriege ich die denn dann weg?
SoDanke für die Anhaltspunkte. Das klappt soweit, zumindest das er keine weitere zeile hinzufügt wenn es keine gibt. nun fällt mir aber auf das die Wawi diese zeile aber schon schreibt. Wie kriege ich die denn dann weg?
$inhalt = Get-Content -Path $csvDatei | select -Skiplast 1
$inhalt = Get-Content -Path $csvDatei | ?{$_ -notmatch '^\s*$'}
Zitat von @Springstil:
Leider klappt das immer noch nicht :/ ich bin echt am verzweifeln
bei select -Skiplast 1 löscht er mir die zeile mit den daten
Deswegen sagte ich ja nutze die letzte Variante von oben, da passiert das nicht, und die ist auch wasserdicht was Trenner innerhalb von Daten betrifft!Leider klappt das immer noch nicht :/ ich bin echt am verzweifeln
bei select -Skiplast 1 löscht er mir die zeile mit den daten
Habe die anderen Methoden daraufhin aber auch noch oben ergänzt.