Powershell csv Dateien in einem Ordner als geopkg speichern
Hallo, ich bin ganz neu auf der Plattform dabei und auch auch erst ganz neu mit dem Umgang von Powershell also seid bitte nachsichtig mit mir 
Mein ziel ist es aus einem Ordner Daten auf meinem D Laufwerk mehrere csv Dateien als geopkg Dateien im Order ausgabe auch auf D abzuspeichern. Hierfür hatte ich folgendes Skript geschrieben. Allerdings bekomm ich es nicht zum Laufen. Vielleicht kann mir ja jemand weiterhelfen und sagen, ob der Code so überhaupt funktionieren kann. Vielleicht hat ja aber auch jemand eine andere Idee.
Für Eure Hilfe bin ich sehr dankbar.
Freundliche Grüße
Mein ziel ist es aus einem Ordner Daten auf meinem D Laufwerk mehrere csv Dateien als geopkg Dateien im Order ausgabe auch auf D abzuspeichern. Hierfür hatte ich folgendes Skript geschrieben. Allerdings bekomm ich es nicht zum Laufen. Vielleicht kann mir ja jemand weiterhelfen und sagen, ob der Code so überhaupt funktionieren kann. Vielleicht hat ja aber auch jemand eine andere Idee.
$folder_csv = Get-Content -path "D:\Daten"
$folder_fileout = 'D: \ausgabe'
$files = Get-ChildItem $folder_csv -File -Filter *csv
foreach ($file in $files) {
$newFileName = $file.Name.Replace("csv","geopkg")
Rename-Item $file $newFileName
}
Für Eure Hilfe bin ich sehr dankbar.
Freundliche Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7106311340
Url: https://administrator.de/forum/powershell-csv-dateien-in-einem-ordner-als-geopkg-speichern-7106311340.html
Ausgedruckt am: 19.03.2025 um 10:03 Uhr
13 Kommentare
Neuester Kommentar

Hi.
Nee das klappt so nicht wenn du die Ordner-Angabe mit Get-Content verschnabulierst
Gruß
Nee das klappt so nicht wenn du die Ordner-Angabe mit Get-Content verschnabulierst
$folder_csv = 'D:\Daten'
$folder_fileout = 'D:\ausgabe'
Get-ChildItem $folder_csv -File -Filter *.csv | copy-item -Destination {"${folder_fileout}\$($_.Name -replace '\.csv$','.geopkg')"} -verbose

{$_.name -replace '.csv', '.geopkg'}
Achtung bei -replace wird RegularExpression Syntax im ersten Parameter verwendet, ein Punkt steht für ein beliebiges Zeichen, es könnte also etwa auch der Inhalt fcsv usw. an beliebiger Stelle im Dateinamen ersetzt werden werden! Möchte man einen Punkt matchen muss man ihn mit Backslash escapen! Siehe meine Variante oben die ist diesbezüglich wasserdicht und ersetzt auch nur am Ende des Dateinamens.Was zum lesen über Regex, für verregnete Mai Tage ...
https://danielfett.de/2006/03/20/regulaere-ausdruecke-tutorial/

start "cmd" -wait -Argumentlist '/c "C:\Pfad\zur\qgis_process-qgis.bat" run native:createpointslayerfromtable --TARGET_CRS="EPSG:4326" --INPUT="Z:\\Eingabedaten\testversuch_new.csv" --XFIELD="geometry_longitude" --YFIELD="geometry_latitude" --OUTPUT="H:\\ergenis.gpkg"'

Zitat von @drachenbaby11997:
Bekomm mein Problem leider nicht gelöst, dir trotzdem ein riesen Dank für die schnelle Hilfe und deine Zeit
???Bekomm mein Problem leider nicht gelöst, dir trotzdem ein riesen Dank für die schnelle Hilfe und deine Zeit
Thread done. New question new thread.

$folder_csv = 'Z:\04 EA Daten\Datenbereitstellung'
$folder_fileout = 'D:\ausgabe'
foreach($file in Get-ChildItem $folder_csv -File -Filter *.csv){
start "cmd.exe" -wait -Argumentlist "/c `"D:\QGIS-PORTABLE\QGIS-PORTABLE\bin\qgis_process-qgis.bat`" run native:createpointslayerfromtable --TARGET_CRS=`"EPSG:4326`" --INPUT=`"$($file.Fullname)`" --XFIELD=`"geometry_longitude`" --YFIELD=`"geometry_latitude`" --OUTPUT=`"${folder_fileout}\$($file.Basename).gpkg`""
}

Escaping war nicht vollständig, behoben ...