Powershell Dateien verschieben - Kriterien sind dabei Teile von Ordner- und Datei-Namen
Hallo,
ich möchte per Powershell Dateien verschieben. Kriterien sind dabei Ordner- & Datei-Namen
feste Quell UNC-Struktur: \\srv1\a\b\c\d\
für Unterordnerebene5 gilt nur wenn = B*
für Unterordnerebene6 gilt nur wenn = Fotos
Nur Dateien im Unterordnerebene6 = Fotos verschieben!
Quellen sind also \\srv1\a\b\c\d\B*\Fotos\*.jpg
feste Zielstruktur: \\srv2\x\y\z\
Quelle Unterordnerebene 5 = Ziel Unterordnerebene 4
Ziel Unterordnerebene 5 = 3 stellige Zahl aus Dateinamen
Ziel Unterordnerebene 6 = 8 stellige Zahl aus Dateinamen (!)
(!) für die 8 stellige Zahl aus dem Dateinamen sollen für 5 verschiedene Werte, 5 feste Ordnernamen angegeben werden können:
01234567 = Name1
12345678 = Name2
23456789 = Name3
34567890 = Name4
45678901 = Name5
Ziele sind also \\srv2\x\y\z\B*\3stelligeZahl\Name\
Bsp:
Quelle:
\\srv1\a\b\c\d\ Bla\Fotos\abd_xx_01234567_123*.jpg
Blb\Fotos\xyz_kk_12345678_234*.jpg
Blc\Fotos\xyz_hh_23456789_345*.jpg
LLL\Fotos\xyz_xx_12345678_123*.jpg ignorieren
Bla\Sonstiges\xyz_xx_12345678_123*.jpg ignorieren
Ziel:
\\srv2\x\y\z\ Bla\123\Name1\abd_xx_01234567_123*.jpg
Blb\234\Name2\xyz_kk_12345678_234*.jpg
Blc\345\Name3\xyz_hh_23456789_345*.jpg
Kann mir da ein Profi bitte helfen?
Gruß und Danke
Jenny
ich möchte per Powershell Dateien verschieben. Kriterien sind dabei Ordner- & Datei-Namen
feste Quell UNC-Struktur: \\srv1\a\b\c\d\
für Unterordnerebene5 gilt nur wenn = B*
für Unterordnerebene6 gilt nur wenn = Fotos
Nur Dateien im Unterordnerebene6 = Fotos verschieben!
Quellen sind also \\srv1\a\b\c\d\B*\Fotos\*.jpg
feste Zielstruktur: \\srv2\x\y\z\
Quelle Unterordnerebene 5 = Ziel Unterordnerebene 4
Ziel Unterordnerebene 5 = 3 stellige Zahl aus Dateinamen
Ziel Unterordnerebene 6 = 8 stellige Zahl aus Dateinamen (!)
(!) für die 8 stellige Zahl aus dem Dateinamen sollen für 5 verschiedene Werte, 5 feste Ordnernamen angegeben werden können:
01234567 = Name1
12345678 = Name2
23456789 = Name3
34567890 = Name4
45678901 = Name5
Ziele sind also \\srv2\x\y\z\B*\3stelligeZahl\Name\
Bsp:
Quelle:
\\srv1\a\b\c\d\ Bla\Fotos\abd_xx_01234567_123*.jpg
Blb\Fotos\xyz_kk_12345678_234*.jpg
Blc\Fotos\xyz_hh_23456789_345*.jpg
LLL\Fotos\xyz_xx_12345678_123*.jpg ignorieren
Bla\Sonstiges\xyz_xx_12345678_123*.jpg ignorieren
Ziel:
\\srv2\x\y\z\ Bla\123\Name1\abd_xx_01234567_123*.jpg
Blb\234\Name2\xyz_kk_12345678_234*.jpg
Blc\345\Name3\xyz_hh_23456789_345*.jpg
Kann mir da ein Profi bitte helfen?
Gruß und Danke
Jenny
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 317755
Url: https://administrator.de/contentid/317755
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
4 Kommentare
Neuester Kommentar
$source = '\\srv1\a\b\c\d'
$target = '\\srv2\x\y\z'
$map = @{
'01234567' = 'Name1'
'12345678' = 'Name2'
'23456789' = 'Name3'
'34567890' = 'Name4'
'45678901' = 'Name5'
}
gci "$source\B*\Fotos\*.jpg" | ?{$_.Fullname -match '\\([^\\]+)\\Fotos\\.*?(\d{8})_(\d{3}).*\.jpg$'} | %{
$newfolder = "$target\$($matches[1])\$($matches[3])\$($map.($matches[2]))"
if (!(Test-Path $newfolder)){md $newfolder -Force}
move-item $_.Fullname -Destination $newfolder -Force
}
@Kraemer
klar. Wieviel willst du zahlen?
Ist das hier jetzt ein Marktplatz oder ein Forum ?Geh zu Mama und hol dir dein Taschengeld ab wenn's diesen Monat schon nicht mehr reicht.
Zitat von @131026:
@Kraemer
Geh zu Mama und hol dir dein Taschengeld ab wenn's diesen Monat schon nicht mehr reicht.
So langsam mutiert das hier von einem Forum zu Wünsch dir was!@Kraemer
klar. Wieviel willst du zahlen?
Ist das hier jetzt ein Marktplatz oder ein Forum ?Geh zu Mama und hol dir dein Taschengeld ab wenn's diesen Monat schon nicht mehr reicht.
Ja ist korrigiert
Die Funktionsfähge Vorlage hast du jetzt, was du damit jetzt machst ist dein Problem und deine Arbeit.
> if (!(Test-Path $newfolder)){md $newfolder -Force}
musste ich ersetzen durch
if (!(Test-Path $newfolder)){md $newfolder -Force | out-null}
Davor macht das Script nichts. Richtig ?
Falsch diese Änderung von dir bewirkt nur das die Ausgabe der Erstellung eines neuen Ordners unterdrückt wird. Das kannst du also gerne machen musste ich ersetzen durch
if (!(Test-Path $newfolder)){md $newfolder -Force | out-null}
Davor macht das Script nichts. Richtig ?
Jetzt ist es so, dass das Ziel nicht dem $target\B*\d{3}\{map} entspricht sondern
dass es sich aus $target\$source\B*\d{3}\ zusammensetzt.
Der Sourcepfad ist also zuviel und den Mapping-Ordner macht er gar nicht.
Kann ich nicht bestätigen, geht hier problemlos.dass es sich aus $target\$source\B*\d{3}\ zusammensetzt.
Der Sourcepfad ist also zuviel und den Mapping-Ordner macht er gar nicht.
Macht es einen Unterschied ob es sich um UNC-Pfade oder Laufwerkspfade handelt oder nicht (\\srv1\ vs. L:\) ?
Nein, nur das natürlich ebenfalls ausreichende Berechtigungen vorhanden sein müssen.Die Funktionsfähge Vorlage hast du jetzt, was du damit jetzt machst ist dein Problem und deine Arbeit.