Benutzer mit den meisten Antworten
PowerShell Dateinamen eines Ordners in ein Array

Frage
-
Hallo,
leider habe ich hierzu nichts gefunden. Vielleicht ist es ja auch gar nicht möglich, aber ich würde gerne alle Dateien innerhalb eines Ordners auslesen, die Dateinamen extrahieren, dort eine Nummer (Syntax der Dateien ist immer gleich) z.b. via regex extrahieren dies in ein array packen, dann zu jeder Nummer die Datenbank fragen und wenn die Nummer vorhanden ist, diese Datei verschieben. Leider bekomme ich den Ansatz nicht einmal hin. Wie kann ich die Dateinamen alle Dateien aus einem Ordner auslesen?
Dankeschön.
Antworten
-
Servus,
so geht es sogar noch fixer /angenehmer.
#als Objekt Get-ChildItem c:\temp -Directory -Recurse Get-ChildItem c:\temp -File -Recurse #oder direkt den Namen (Get-ChildItem c:\temp -Directory -Recurse).Name (Get-ChildItem c:\temp -Files -Recurse).Name
damit hast du schon mal eine Liste der Daten.
Dann musst du uns nur noch sagen, wie die Dateien aussehen und was du filtern willst. Regex z.B. so möglich:
$matches = [regex]::Matches($content,'$REGEXVALUE')
Zusammengebaut dann vielleicht so:
$directories=(Get-ChildItem c:\temp -Directory -Recurse).Name foreach ($item in $directories) { $matches = [regex]::Matches($content,'^') if ($matches) { #mache etwas } }
Datenbankabfrage wird etwas komplexer - MSSQL?
Da gibt es vorgefertigte Funktionen, die du nutzen könntest.
Verschieben geht dann mit
Move-Item
Sinnvoll ist es auch immer die Hilfe anzuschauen - z.B.
Get-Help Move-Item -verbose
Versuch erstmal die ersten Steps - offenbar fehlt dir auch noch Grundwissen und das können wir dir nicht ersetzen.
Grüße
Greetings,
David das Neves
Technology Specialist - Consulting Services
Computacenter AG & Co. oHG - München
Blog
Caution: This post may contain errors.
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Montag, 19. Oktober 2015 13:34
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 20. Oktober 2015 11:25
Alle Antworten
-
Hallo,
eigentlich ist das alles ganz einfach und genau, wofür PowerShell gemacht wurde :-)
Angenommen, es geht um den Ordner C:\Temp. Damit bekommst du alle Dateien, Ordner werden gleich herausgefiltert.
$Dateien = Get-Childitem "C:\Temp" -recurse | where{-not $_.PSIsContainer}
Die Dateinamen als Array bekommst du über
$Dateinamen = $Dateien | select -ExpandProperty Basename
Vielleicht hilft dir das als Ansatz?
-
Servus,
so geht es sogar noch fixer /angenehmer.
#als Objekt Get-ChildItem c:\temp -Directory -Recurse Get-ChildItem c:\temp -File -Recurse #oder direkt den Namen (Get-ChildItem c:\temp -Directory -Recurse).Name (Get-ChildItem c:\temp -Files -Recurse).Name
damit hast du schon mal eine Liste der Daten.
Dann musst du uns nur noch sagen, wie die Dateien aussehen und was du filtern willst. Regex z.B. so möglich:
$matches = [regex]::Matches($content,'$REGEXVALUE')
Zusammengebaut dann vielleicht so:
$directories=(Get-ChildItem c:\temp -Directory -Recurse).Name foreach ($item in $directories) { $matches = [regex]::Matches($content,'^') if ($matches) { #mache etwas } }
Datenbankabfrage wird etwas komplexer - MSSQL?
Da gibt es vorgefertigte Funktionen, die du nutzen könntest.
Verschieben geht dann mit
Move-Item
Sinnvoll ist es auch immer die Hilfe anzuschauen - z.B.
Get-Help Move-Item -verbose
Versuch erstmal die ersten Steps - offenbar fehlt dir auch noch Grundwissen und das können wir dir nicht ersetzen.
Grüße
Greetings,
David das Neves
Technology Specialist - Consulting Services
Computacenter AG & Co. oHG - München
Blog
Caution: This post may contain errors.
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Montag, 19. Oktober 2015 13:34
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 20. Oktober 2015 11:25