
147900
09.03.2021, aktualisiert um 14:48:33 Uhr
Dateien Auf Dateinamen basierend kopieren und einfügen
Hallo,
Zu Beginn, ich habe keine richtigen Berührungspunkte mit Batch und/oder Powershell.
Trotzdessen.. Ich habe ein Mitarbeiterverzeichnis aufgesetzt für dieses ich nun eine Lösung suche, welche Dokumente per Script automatisiert in das erwähnte Verzeichnis kopiert. Die zu kopierenden Dokumente liegen derzeit alle in einem Ordner und sollen in den jeweiligen Unterordner des Verzeichnis kopiert werden. Die Dateinamen der Dokumente sind wie folgt aufgebaut.
Bsp.: ABCD_123456_1234567_12345_XX.pdf/
Auch: ABCD_123456_1234567_12345_XXXX.pdf/
XX/XXXX in diesem Fall die Variablen, welche in der Zuordnung eine Rolle spielen. Die Zielverzeichnisse enthalten diese auch. Derzeit gibt es etwa fünfzig Stück.
Mir stellt sich nun die Frage ob es eine Möglichkeit gibt sich beim Auslesen lediglich an den Variablen zwischen dem dritten underscore und dem .fileext zu orientieren, da diese variieren und evtl. eine dreistellige und/oder fünfstellige Variable hinzukommt. Die Suchfunktion habe ich bereits genutzt aber nichts gefunden, dass genau dem gegebenen Beispiel entspricht.
Soll-Bsp.: C:/ABCD_123456_1234567_12345_99 -> \\17.11.19.91\Verzeichnis\99_ABCD\
C:/ABCD_123456_1234567_12345_9999 -> \\17.11.19.91\Verzeichnis\9999_ABCD\
evtl. C:/ABCD_123456_1234567_12345_999 -> \\17.11.19.91\Verzeichnis\999_ABCD\
C:/ABCD_123456_1234567_12345_99999 -> \\17.11.19.91\Verzeichnis\99999_ABCD\
usw.
Vielleicht hat hier jemand eine Idee oder zumindest einen konkreten Denkanstoß in welche Richtung ich mich orientieren muss.
Vielen Dank im Voraus.
BlackArch
Zu Beginn, ich habe keine richtigen Berührungspunkte mit Batch und/oder Powershell.
Trotzdessen.. Ich habe ein Mitarbeiterverzeichnis aufgesetzt für dieses ich nun eine Lösung suche, welche Dokumente per Script automatisiert in das erwähnte Verzeichnis kopiert. Die zu kopierenden Dokumente liegen derzeit alle in einem Ordner und sollen in den jeweiligen Unterordner des Verzeichnis kopiert werden. Die Dateinamen der Dokumente sind wie folgt aufgebaut.
Bsp.: ABCD_123456_1234567_12345_XX.pdf/
Auch: ABCD_123456_1234567_12345_XXXX.pdf/
XX/XXXX in diesem Fall die Variablen, welche in der Zuordnung eine Rolle spielen. Die Zielverzeichnisse enthalten diese auch. Derzeit gibt es etwa fünfzig Stück.
Mir stellt sich nun die Frage ob es eine Möglichkeit gibt sich beim Auslesen lediglich an den Variablen zwischen dem dritten underscore und dem .fileext zu orientieren, da diese variieren und evtl. eine dreistellige und/oder fünfstellige Variable hinzukommt. Die Suchfunktion habe ich bereits genutzt aber nichts gefunden, dass genau dem gegebenen Beispiel entspricht.
Soll-Bsp.: C:/ABCD_123456_1234567_12345_99 -> \\17.11.19.91\Verzeichnis\99_ABCD\
C:/ABCD_123456_1234567_12345_9999 -> \\17.11.19.91\Verzeichnis\9999_ABCD\
evtl. C:/ABCD_123456_1234567_12345_999 -> \\17.11.19.91\Verzeichnis\999_ABCD\
C:/ABCD_123456_1234567_12345_99999 -> \\17.11.19.91\Verzeichnis\99999_ABCD\
usw.
Vielleicht hat hier jemand eine Idee oder zumindest einen konkreten Denkanstoß in welche Richtung ich mich orientieren muss.
Vielen Dank im Voraus.
BlackArch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 660631
Url: https://administrator.de/forum/dateien-auf-dateinamen-basierend-kopieren-und-einfuegen-660631.html
Ausgedruckt am: 17.05.2025 um 08:05 Uhr
10 Kommentare
Neuester Kommentar

$quelle = 'D:\Quelle'
$ziel = 'F:\ziel'
ls $quelle -File -Filter *.pdf | ?{$_.Basename -match '_(\d+)$'} | %{
$newfolder = ls "$ziel\$($matches[1])_*" -Directory
if ($newfolder){
$_ | move -Destination $newfolder.FullName -Verbose
}else{
write-host "Ein Verzeichnis mit der Bezeichnung : $($matches[1])_* gibt es im Zielordner noch nicht."
}
}

Zitat von @147900:
Vielen Dank, allerdings funktioniert es irgendwie nicht.
Diese nichtssagenden Aussagen liebe ich hier ja, besonders an Freitagen und das in einem Admin-Forum, Koppschüttel!! 🐟Vielen Dank, allerdings funktioniert es irgendwie nicht.
Das obige Powershell-Skript (wie man sehen kann) ist auf deine Beschreibung oben angepasst und funktioniert hier im Test einwandfrei, wenn es bei dir also nicht läuft hast du entweder das Teil versucht als Batch auszuführen oder hast deine Parameter oben nicht exakt genug spezifiziert!
Das Skript oben geht alle *.pdf Dateien eines Verzeichnisses durch welche im Basename der Datei am Ende einen Unterstrich "_" gefolgt von einer oder mehreren Zahlen besitzen. Damit wird im Zielordner versucht mit dieser Zahlenkombination die im RegexMatch steht einen Unterordner zu finden der mit dieser Zahl einem Unterstrich und beliebig folgenden anderen Zeichen zu finden. War das erfolgreich wird die die PDF-Datei in diesen Ordner verschoben, also ganz einfach und logisch aufgebaut.

Skript hat falsche Kodierung... Wurde oben getestet, funktioniert hier einwandfrei.

UTF-8 bzw. Ansi. Die Fehlermeldung oben deutet darauf hin das du bei Speichern in einem Editor die falsche Kodierung gesetzt hast, Kommt bei PS Neulingen immer mal wieder vor.