Dateien von der Quelle zum Ziel (eine Ebene höher) kopieren
Hallo,
es gibt einen Quellbereich mit mehreren tausend Ordnern und Dateien z.B.:
C:\temp\Quelle\*\N
Bsp:
C:\temp\Quelle\0A519B3F-17C1-4264-88B7-550D47ECC903\N\*.*
C:\temp\Quelle\0A0554C4-7CD2-48D6-AB9B-5ACAA2E8B227\N\*.*
C:\temp\Quelle\0CBCA949-9E83-4119-B3CD-5B3BFB9D8488\N\*.*
C:\temp\Quelle\EB6B5212-1DEE-4FA7-B7D7-D32606B32D4D\N\*.*
usw.
Unterhalb des letzten Ordners befinden sich jeweils unterschiedliche Dateien/Dateitypen. Es sollen aber u.a. nur die .txt Dateien vom Quell- zum Zielbereich kopiert werden. Die Struktur des Quellbereiches soll nicht verändert werden.
Aktuell ist der Zielbereich leer. Der Zielbereich soll schlussendlich nach der Kopieraktion fast die ähnliche Struktur ( GUID\*.txt ) wie der Quellbereich haben. Der Zielbereich liegt speichermäßig aber völlig woanders und die Dateien sollen eine Ebene höher rutschen. Zum Testen habe ich daher den nachfolgenden Bereich gewählt.
C:\temp\Ziel\*\
So soll nach der Kopieraktion der Zielbereich aussehen.
Bsp.:
C:\temp\Ziel\0A519B3F-17C1-4264-88B7-550D47ECC903\*.txt
C:\temp\Ziel\0A0554C4-7CD2-48D6-AB9B-5ACAA2E8B227\*.txt
C:\temp\Ziel\0CBCA949-9E83-4119-B3CD-5B3BFB9D8488\*.txt
C:\temp\Ziel\EB6B5212-1DEE-4FA7-B7D7-D32606B32D4D\*.txt
usw.
Ich hoffe es ist einigermaßen klar beschrieben.
Einige Ansätze mit der for-Schleife habe ich gemacht. Scheitere aber beim Anlegen der Zielstruktur mit jeweils einen Unterordner weniger.
Danke vorab für die Unterstützung.
es gibt einen Quellbereich mit mehreren tausend Ordnern und Dateien z.B.:
C:\temp\Quelle\*\N
- - steht für wechselnde, beliebige Ordner (z.B. GUID)
Bsp:
C:\temp\Quelle\0A519B3F-17C1-4264-88B7-550D47ECC903\N\*.*
C:\temp\Quelle\0A0554C4-7CD2-48D6-AB9B-5ACAA2E8B227\N\*.*
C:\temp\Quelle\0CBCA949-9E83-4119-B3CD-5B3BFB9D8488\N\*.*
C:\temp\Quelle\EB6B5212-1DEE-4FA7-B7D7-D32606B32D4D\N\*.*
usw.
Unterhalb des letzten Ordners befinden sich jeweils unterschiedliche Dateien/Dateitypen. Es sollen aber u.a. nur die .txt Dateien vom Quell- zum Zielbereich kopiert werden. Die Struktur des Quellbereiches soll nicht verändert werden.
Aktuell ist der Zielbereich leer. Der Zielbereich soll schlussendlich nach der Kopieraktion fast die ähnliche Struktur ( GUID\*.txt ) wie der Quellbereich haben. Der Zielbereich liegt speichermäßig aber völlig woanders und die Dateien sollen eine Ebene höher rutschen. Zum Testen habe ich daher den nachfolgenden Bereich gewählt.
C:\temp\Ziel\*\
- - steht für wechselnde Ordner aus der Quelle (z.B. GUID)
So soll nach der Kopieraktion der Zielbereich aussehen.
Bsp.:
C:\temp\Ziel\0A519B3F-17C1-4264-88B7-550D47ECC903\*.txt
C:\temp\Ziel\0A0554C4-7CD2-48D6-AB9B-5ACAA2E8B227\*.txt
C:\temp\Ziel\0CBCA949-9E83-4119-B3CD-5B3BFB9D8488\*.txt
C:\temp\Ziel\EB6B5212-1DEE-4FA7-B7D7-D32606B32D4D\*.txt
usw.
Ich hoffe es ist einigermaßen klar beschrieben.
Einige Ansätze mit der for-Schleife habe ich gemacht. Scheitere aber beim Anlegen der Zielstruktur mit jeweils einen Unterordner weniger.
Danke vorab für die Unterstützung.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 379892
Url: https://administrator.de/forum/dateien-von-der-quelle-zum-ziel-eine-ebene-hoeher-kopieren-379892.html
Ausgedruckt am: 17.04.2025 um 18:04 Uhr
8 Kommentare
Neuester Kommentar
Servus,
Powershell (mit Kommentaren):
oder Batch:
Grüße Uwe
Powershell (mit Kommentaren):
# Quellordner
$quelle = 'D:\quelle'
# Zielordner
$ziel = 'D:\ziel'
# Schleife über die Ordner der Quelle
gci $quelle -Directory | %{
# Zielordner festlegen
$target = "$ziel\$($_.Name)"
# Zielordner erstellen wenn er noch nicht existiert
if(!(test-Path $target)){md $target -Force | out-null}
# Alle Textdateien aus dem Unterordner "\N" in die Zielstruktur kopieren
gci "$($_.FullName)\N" -Filter *.txt -Recurse -File | copy-item -Destination $target -Verbose
}
@echo off
set "quelle=D:\Quelle"
set "ziel=D:\Ziel"
for /d %%a in ("%quelle%\*") do (
if not exist "%ziel%\%%~nxa" md "%ziel%\%%~nxa" >nul
copy "%%~a\N\*.txt" "%ziel%\%%~nxa\"
)
Zitat von @darebo:
Bei der Powershell-Lösung erhalte ich folgende Fehlermeldung:
Kann aber den Fehler nicht direkt auflösen. Hast du noch eine Idee?
Ja eindeutig, du verwendest eine bereits sehr veraltete Powershell 2.0, die kennt die Parameter -Directory und -File noch nicht, lässt sich aber leicht für die PS2.0 umschreiben,Bei der Powershell-Lösung erhalte ich folgende Fehlermeldung:
Kann aber den Fehler nicht direkt auflösen. Hast du noch eine Idee?
Gesamt dann so
#Quellordner
$quelle = 'D:\quelle'
# Zielordner
$ziel = 'D:\ziel'
# Schleife über die Ordner der Quelle
gci $quelle | ?{$_.PSIsContainer} | %{
# Zielordner festlegen
$target = "$ziel\$($_.Name)"
# Zielordner erstellen wenn er noch nicht existiert
if(!(test-Path $target)){md $target -Force | out-null}
# Alle Textdateien aus dem Unterordner "\N" in die Zielstruktur kopieren
gci "$($_.FullName)\N" -Filter *.txt -Recurse | ?{!$_.PSIsContainer} | copy-item -Destination $target -Verbose
}