Dateien suchen, kopieren und sortieren
Hallo,
folgendes Problem:
Dateien, die auf einem Laufwerk monatsweise in Ordnern abgelegt sind, sollen per Batch auf ein anderes Laufwerk kopiert werden und gleichzeitig nicht nach Monate, sondern nach Benennung einsortiert werden. Dabei kann es auch vorkommen, dass gleich benannte Dateien in mehreren Ordner vorkommen.
Iststand:
- Ordner
..\2015_07\
..\2015_06\
...
..\2003_07\
- Dateien
..\2015_07\1.MES
..\2015_07\12.MES
...
..\2015_07\12345678.MES
Soll:
- Ordner
..\00000000-00009999\
..\00010000-00019999\
...
..\34990000-34999999\
Kann mir da jemand helfen, oder ist das für eine Batch zu kompliziert? Bin ein Neuling auf dem Gebiet...
MfG BAD1HOR
folgendes Problem:
Dateien, die auf einem Laufwerk monatsweise in Ordnern abgelegt sind, sollen per Batch auf ein anderes Laufwerk kopiert werden und gleichzeitig nicht nach Monate, sondern nach Benennung einsortiert werden. Dabei kann es auch vorkommen, dass gleich benannte Dateien in mehreren Ordner vorkommen.
Iststand:
- Ordner
..\2015_07\
..\2015_06\
...
..\2003_07\
- Dateien
..\2015_07\1.MES
..\2015_07\12.MES
...
..\2015_07\12345678.MES
Soll:
- Ordner
..\00000000-00009999\
..\00010000-00019999\
...
..\34990000-34999999\
Kann mir da jemand helfen, oder ist das für eine Batch zu kompliziert? Bin ein Neuling auf dem Gebiet...
MfG BAD1HOR
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 286439
Url: https://administrator.de/forum/dateien-suchen-kopieren-und-sortieren-286439.html
Ausgedruckt am: 14.05.2025 um 19:05 Uhr
6 Kommentare
Neuester Kommentar

Moin BAD1HOR,
vielleicht solltest du deine Beschreibung etwas klarer machen, vermutlich hat deswegen noch keiner geantwortet. Habe es mal versucht zu interpretieren,
hier eine Lösung mit Powershell.
Gruß jodel32
vielleicht solltest du deine Beschreibung etwas klarer machen, vermutlich hat deswegen noch keiner geantwortet. Habe es mal versucht zu interpretieren,
hier eine Lösung mit Powershell.
#Quellordner
$source = 'c:\quelleroot'
# Zielordner
$target = 'C:\zielroot'
# Logfile
$logfile = 'C:\logfile.txt
$cnt = 0
# Für alle Dateien des Quellordners inkl. Unterordner welche nur aus Zahlen bestehen ...
gci $source -recurse | ?{!$_.PSIsContainer -and $_.Basename -match '^\d+$'} | %{
# Ordnername generieren (10000er Sätze)
$lowerbound = [math]::Floor(([decimal]$_.BaseName / 10000)) * 10000
$newfolder = $target + "\" + $lowerbound.toString().PadLeft(10,'0') + "-" + ($lowerbound + 9999).toString().padLeft(10,'0')
# Ordner erstellen falls er noch nicht existiert
if (!(Test-Path $newfolder)){md $newfolder -Force | out-null}
$fname = $_.Name; $cnt = 1
# auf Duplikate checken und bei Bedarf eine zusätzliche Nummer (x) anhängen
while((Test-Path "$newfolder\$fname")){
$fname = "$($_.Basename)($cnt)$($_.Extension)"; $cnt++
}
# Datei in Zielordner kopieren
copy $_.FullName "$newfolder\$fname" -Verbose
$cnt++
}
# Write Log
@"
$(get-date -F g) / Computer: $env:COMPUTERNAME / Anzahl kopierter Dateien: $($cnt)
--------------
"@ | Add-Content -Path $logfile

Zitat von @BAD1HOR:
1. Ist es auch möglich, in der Powershell die kopierten Dateien anzuzeigen, und die erstellten Ordner nicht anzeigen?
2. Wie kann ich dazu noch ein LogFile schreiben?
Log soll enthalten:
- Datum mit Zeit
- Rechnername
- Anzahl kopierte Dateien
Alles oben ergänzt ..1. Ist es auch möglich, in der Powershell die kopierten Dateien anzuzeigen, und die erstellten Ordner nicht anzeigen?
2. Wie kann ich dazu noch ein LogFile schreiben?
Log soll enthalten:
- Datum mit Zeit
- Rechnername
- Anzahl kopierte Dateien
Gruß jodel32

Zitat von @BAD1HOR:
Hallo jodel32,
hat fast funktioniert. Das zählen in der LogFile geht nicht. Bei $(cnt) kam eine Fehlermeldung das cnt nicht definiert wäre, dann habe ich daraus $($cnt) gemacht, wurde dann aber falsch gezählt.
Fehler korrigiert (Dollarzeichen vor der Variablen vergessen...Hallo jodel32,
hat fast funktioniert. Das zählen in der LogFile geht nicht. Bei $(cnt) kam eine Fehlermeldung das cnt nicht definiert wäre, dann habe ich daraus $($cnt) gemacht, wurde dann aber falsch gezählt.
Außerdem brauche ich noch 2 Erweiterungen.
Gegen Entgeld gerne....Gruß jodel32