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.
Please also mark the comments that contributed to the solution of the article
Content-Key: 391789
Url: https://administrator.de/contentid/391789
Printed on: April 24, 2024 at 23:04 o'clock
18 Comments
Latest comment
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 , oder sich hinsetzen und eben Powershell selbst lernen. Geiz ist Geil scheint ja in Mode ...
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.