Per Batch Dateien aus Unterordner verschieben
Hallo Zusammen
Ich habe folgende Struktur:
Ich möchte nun dass alle Dateien aus dem Ordner B und deren Subordner (B1, B2, B3) jeweils ins Verzeichnis Ordner A verschoben werden. Dazu habe ich folgenden Code zusammengestiefelt:
for /r "C:\temp\Personen\Fritz Müller\Ordner B" %f in (*) do @copy "%f" "C:\temp\Personen\Fritz Müller\Ordner A"
Der Code funktioniert, jedoch habe ich eine direkte Pfadangabe. Sprich für die 3 Beispiele geht ja das noch von Hand zu erstellen, jedoch habe ich etwa 600 solcher Ordner. Wie geht das?
Ich habe folgende Struktur:
Ich möchte nun dass alle Dateien aus dem Ordner B und deren Subordner (B1, B2, B3) jeweils ins Verzeichnis Ordner A verschoben werden. Dazu habe ich folgenden Code zusammengestiefelt:
for /r "C:\temp\Personen\Fritz Müller\Ordner B" %f in (*) do @copy "%f" "C:\temp\Personen\Fritz Müller\Ordner A"
Der Code funktioniert, jedoch habe ich eine direkte Pfadangabe. Sprich für die 3 Beispiele geht ja das noch von Hand zu erstellen, jedoch habe ich etwa 600 solcher Ordner. Wie geht das?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294582
Url: https://administrator.de/contentid/294582
Ausgedruckt am: 15.11.2024 um 19:11 Uhr
10 Kommentare
Neuester Kommentar
Einziges Problem was ich sehe: Wenn in den B-Unterordnern einer Person Dateien mit dem gleichen Namen liegen, kann die zweite Datei nicht auch in den Ordner Person\Ordner A\ verschoben werden...
$pfad = "C:\...\Personen"
ForEach($person in Get-ChildItem $pfad) {
$zielPfad = $person.FullName + "\Ordner A"
$ausgangsPfad = $person.FullName + "\Ordner B"
$dateien = Get-ChildItem -Path $ausgangsPfad -file -Recurse # alle Files im Ordner Person\Ordner B
ForEach($datei in $dateien) {
Move-Item -Path $datei.FullName -Destination $zielPfad
}
}
Zitat von @TryAndSolve:
Habs getestet. Powershell gibt dann die Meldung "Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist." aus.
Ich könnte natürlich noch vorher prüfen ob die Datei bereits vorhanden ist und wenn ja noch was hinten anhängen.
Habs getestet. Powershell gibt dann die Meldung "Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist." aus.
Ich könnte natürlich noch vorher prüfen ob die Datei bereits vorhanden ist und wenn ja noch was hinten anhängen.
Das hier dürfte in etwa funktionieren (nicht getestet)
Anstelle von _2 würde sich allerdings eher ein TimeStamp anbieten.
foreach ($f in $files){
$search = test-path $f
if ($search -eq $true){
rename-item $f -newname $f_2
}
}