Dateien Filtern und umbenannt kopieren
Hallo Zusammen,
ich habe ein Script, welches aktuell in einem Ordner Dateien mit einem bestimmten Prefix filtert und kopiert. Dies würde ich gerne erweitern. Hier zunächst der ist Stand:
Die Dateien um die es geht sind bestehen aus dem Prefix und einer Rechnungsnummer, also z.B. "auk_2025451". Ich würde diese aber nun gerne beim kopieren umbenennen, es dürfen aber nicht die Originaldateien umbenannt werden, da diese noch in anderen Scripten verarbeitet werden.
aus dem "auk_2025451" soll z.B. "2025451_Rechnung" werden.
Das bedeutet es müsste also der Dateiname ermittelt, die ersten 4 stellen "auk_" ignoriert und dann nach dem "2025451" das Suffix "_Rechnung" angehängt werden.
Die Idee steht, aber bei der Umsetzung bin ich leider nicht firm genüg, könnt ihr helfen?
ich habe ein Script, welches aktuell in einem Ordner Dateien mit einem bestimmten Prefix filtert und kopiert. Dies würde ich gerne erweitern. Hier zunächst der ist Stand:
Get-ChildItem -Recurse -LiteralPath $InvoicePath -Filter *auk* -File | Copy-Item -Destination $InvoiceCopy
Die Dateien um die es geht sind bestehen aus dem Prefix und einer Rechnungsnummer, also z.B. "auk_2025451". Ich würde diese aber nun gerne beim kopieren umbenennen, es dürfen aber nicht die Originaldateien umbenannt werden, da diese noch in anderen Scripten verarbeitet werden.
aus dem "auk_2025451" soll z.B. "2025451_Rechnung" werden.
Das bedeutet es müsste also der Dateiname ermittelt, die ersten 4 stellen "auk_" ignoriert und dann nach dem "2025451" das Suffix "_Rechnung" angehängt werden.
Die Idee steht, aber bei der Umsetzung bin ich leider nicht firm genüg, könnt ihr helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 61083428810
Url: https://administrator.de/forum/dateien-filtern-und-umbenannt-kopieren-61083428810.html
Ausgedruckt am: 31.03.2025 um 15:03 Uhr
12 Kommentare
Neuester Kommentar

Hi.
Gruß wrk
$InvoicePath = "F:\Rechnungen"
$InvoiceCopy = "Z:\Ablage"
Get-ChildItem -Recurse -LiteralPath $InvoicePath -Filter "*auk*" -File | Copy-Item -Destination {"$InvoiceCopy\$($_.Basename -replace '.*auk_([a-z\d]+).*','$1_Rechnung')$($_.Extension)"} -verbose
Moin,
da hast Du:
hth
Erik
da hast Du:
PARAM (
$InvoiceSPath = "u:\test",
$InvoiceDPath = "u:\test_dest"
)
$invoices = Get-ChildItem -Recurse -Path $InvoiceSPath -Filter "auk_*" -File
foreach($file in $invoices) {
$newname = $file.basename.replace("auk_","")
$newname = $newname + "_rechnung" + $file.extension
copy-item $file.FullName -Destination "$InvoiceDPath\$newname"
}
hth
Erik

Zitat von @Rockett:
Danke wrk, aber leider hat das nicht funktioniert. Der Dateiname bleibt unverändert.
Habe ein Detail vergessen, die Dateien sind in unterordnern. Aber gefunden hat er sie ja, nur den Namen nicht geändert. Trotzdem der Vollständigkeit halber
Danke wrk, aber leider hat das nicht funktioniert. Der Dateiname bleibt unverändert.
Habe ein Detail vergessen, die Dateien sind in unterordnern. Aber gefunden hat er sie ja, nur den Namen nicht geändert. Trotzdem der Vollständigkeit halber
Klappt doch, guckst du die Demo ...
https://tio.run/##bY/LboMwEEX3/ooRQiLQGgp9L7pp@lCkLKquIyEHprEVYyM/0ve3U0 ...
Du verwendest vermutlich wohl noch ne veraltete PowerShell.

Auf der 5er funktioniert das obige ebenso problemlos, wenn das PS 2.0 gewesen wäre OK aber so lüppt das ohne Probleme.
Zeig doch mal Beispieldateien in den Ordnern...
Zeig doch mal Beispieldateien in den Ordnern...

Zitat von @Rockett:
z.B. der Ordner "RE20245145"
in dem befinden sich die Dateien:
auk_RE20245145.pdf
ln_RE20245145.pdf
dlr_RE20245145.pdf
Es wird an die richtige stelle kopiert, aber der Dateiname wird/bleibt "auk_RE20245145.pdf"
z.B. der Ordner "RE20245145"
in dem befinden sich die Dateien:
auk_RE20245145.pdf
ln_RE20245145.pdf
dlr_RE20245145.pdf
Es wird an die richtige stelle kopiert, aber der Dateiname wird/bleibt "auk_RE20245145.pdf"
Siehst du hattest nämlich oben nicht geachrieben das auch Buchstahen statt Zahlen in der Nummer vorkommen ich war davon ausgegangen daß es nur Ziffern sind und hinter der Nummer noch etwas anderes hätte vorkommen können, habe es oben darauf angepasst auf Zahlen und Buchstaben.
Auch hierfür die Demo
https://tio.run/##bY/NTsMwEITvfopVZClNwAkJ/wculIIq9YB6pShyk6Wx6tiR7RQo8O ...

# ....
$MergedFile = Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+"_Anlagen.pdf")
# ....