PS - Teil aus Dateinamen in neuen Ordnernamen erstellen
Hallo Zusammen,
Ich habe folgendes Problem:
In einem Quellverzeichnis liegen Dateien im PDF-Format und diese sollen an Hand einer Kundennummer in ein Zielverzeichnis kopiert werden.
Beispiel:
Dateiname:
D_04_3002_2018-11_100012_Kundenname_Ort.pdf
D_04_3015_2018-11_100057_Kundenname_Ort.pdf
1) Diese beiden Dateien (es werden noch mehr) in dem Quellverzeichnis C:\Users\Admin\Desktop\Quellverzeichnis,
sollen durch die Kundennummer im Dateinamen (immer 6-stellig; 100012, 100057,...) in ein Zielverzeichnis kopiert und wenn dieser nicht vorhanden ist, erstellt werden.
2) Danach sollen die vorhanden Dateien im Quellverzeichnis in ein anderes Zielverzeichnis verschoben werden, was aber bereits vorhanden ist.
zu 1) bleibe ich immer bei: Copy-Item -path .\*.pdf -Destination "C:\Users\Admin\Desktop\Zielverzeichnis\" -Recurse hängen. Wie definiere ich das er die 6-Stellige Kundennummer selektiert und sich danach richtet?
zu 2) Move-Item -path .\*.pdf -Destination "C:\Users\Admin\Desktop\Zielverzeichnis\" <<< ist am Ende das gleiche Problem. Das er mir die 04 im Dateiennamen selektiert und sich danach richtet?
Wie man sieht wird das Script im Quellverzeichnis ausgeführt.
Würde mich über eine Antwort freuen.
Vielen Dank.
Ich habe folgendes Problem:
In einem Quellverzeichnis liegen Dateien im PDF-Format und diese sollen an Hand einer Kundennummer in ein Zielverzeichnis kopiert werden.
Beispiel:
Dateiname:
D_04_3002_2018-11_100012_Kundenname_Ort.pdf
D_04_3015_2018-11_100057_Kundenname_Ort.pdf
1) Diese beiden Dateien (es werden noch mehr) in dem Quellverzeichnis C:\Users\Admin\Desktop\Quellverzeichnis,
sollen durch die Kundennummer im Dateinamen (immer 6-stellig; 100012, 100057,...) in ein Zielverzeichnis kopiert und wenn dieser nicht vorhanden ist, erstellt werden.
2) Danach sollen die vorhanden Dateien im Quellverzeichnis in ein anderes Zielverzeichnis verschoben werden, was aber bereits vorhanden ist.
zu 1) bleibe ich immer bei: Copy-Item -path .\*.pdf -Destination "C:\Users\Admin\Desktop\Zielverzeichnis\" -Recurse hängen. Wie definiere ich das er die 6-Stellige Kundennummer selektiert und sich danach richtet?
zu 2) Move-Item -path .\*.pdf -Destination "C:\Users\Admin\Desktop\Zielverzeichnis\" <<< ist am Ende das gleiche Problem. Das er mir die 04 im Dateiennamen selektiert und sich danach richtet?
Wie man sieht wird das Script im Quellverzeichnis ausgeführt.
Würde mich über eine Antwort freuen.
Vielen Dank.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 391789
Url: https://administrator.de/forum/ps-teil-aus-dateinamen-in-neuen-ordnernamen-erstellen-391789.html
Ausgedruckt am: 25.03.2025 um 06:03 Uhr
18 Kommentare
Neuester Kommentar

Du hättest auch einfach auf die Links unter deinem Thread klicken können dann hättest du es schon fast frei Haus bekommen . Aber die Suche benutzen ist ja auch eine Herauaforderung ...
Gruß l.
$quelle = "."
$ziel = "..\Zielverzeichnis"
gci $quelle -Filter *.pdf -recurse | %{
$dest = "$ziel\$($_.BaseName.split('_')[4])"
if(!(Test-Path $dest)){md $dest -Force | out-null}
$_ | copy-item -Destination $dest -Force -Verbose
}

Split trennt einen String mit einem definierten Trennzeichen in ein Array auf dahinter kommt dann der 0-basierte Index für den gewünschten Arrayeintrag. Hätte man auch einfach selbst ausprobieren können 

Na dann fehlt hier ja nur noch der Haken am Beitrag.

Ja lieber vorher ausprobieren, dann Frage stellen 
Rischtisch 
Klar einfach den Inhalt der Variablen $dest mit dem Prefix FG_ versehen:
Das ist nur eine komprimierte Schreibweise in einem String mit Subexpression $() , du könntest das ganze auch für dich vielleicht verständlicher so schreiben
Ist ja beides eine einfach Concatenation von Strings und Variablen.
$dest = "$ziel\FG_$($_.BaseName.split('_')[1])"
$dest = $ziel + "\FG_" + $_.BaseName.split('_')[1]

Moin.
Du hast aber schon gesehen das sich der User @137443 abgemeldet hat?!
Persönlich angepasste Skripte bekommst du von mir schnell und unkompliziert gerne über PN.
Gruß A.
Du hast aber schon gesehen das sich der User @137443 abgemeldet hat?!
Persönlich angepasste Skripte bekommst du von mir schnell und unkompliziert gerne über PN.
Gruß A.

Zitat von @TurboBurn:
Neee leider nicht.
Schade dieser User konnte mir wenigstens (auch ohne Obolus) weiterhelfen.
Du hast es wohl offensichtlich (wie man sieht) übertrieben. Hat ja offensichtlich auch rein gar nichts mehr mit der ursprünglichen Frage zu tun.Neee leider nicht.
Schade dieser User konnte mir wenigstens (auch ohne Obolus) weiterhelfen.
Naja wer nicht will hat schon. Kannst ja von mir aus noch 1 Jahr damit vertrödeln
Servus.
Du hast Glück das hier jemand den Post sieht. Die User oben scheinen sich ja alle verdrückt zu haben.
Grüße Uwe
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.
Du hast Glück das hier jemand den Post sieht. Die User oben scheinen sich ja alle verdrückt zu haben.
W_06_3015_2019-01_100057_Kundenname_Ort.pdf), dann \\Zielverzeichnis\100057\2019\
usw.$quelle = "\\Quellverzeichnis"
$ziel = "\\Zielverzeichnis"
gci $quelle -Filter *.pdf -recurse | %{
$dest = "$ziel\$($_.BaseName.split('_')[4])\$($_.Basename.split('_')[3].Split('-'))"
if(!(Test-Path $dest)){md $dest -Force | out-null}
$_ | copy-item -Destination $dest -Force -Verbose
}
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.