devbaum

Gleichen Basisdateinamen von 3 Dateien finden und dann die Dateien verschieben

Ich hoffe sehr auf Hilfe mit der ich etwas weiter komme.
Es sollen ca. 50000 Dateien in Windows in einen Ordner verschoben werden.
Die Ordner sind alle in einer Netzfreigabe im Windows 10. In 2 Ordnern sind 3 Dateien mit
gleichem Basisdateinamen wobei eine dieser Dateien keine Dateiendung hat.
Verschoben werden sollen nicht alle, sondern nur die Dateien,
die auch wirklich den gleichen Namen haben.
Beispiel:
Ordner QuelleA enthält die Dateien
Test01.rta und Test02.rta
Ordner QuelleB die Dateien
Test01.ftb und Test01 und Test02.ftb
Ausgangspunkt für die Prüfung ist QuelleA.
Inhalt von QuelleA ist sozusagen die Dateiliste.
Von Dateinamen Test01 sind 3 Dateien vorhanden, die dann in den Ordner ZielA verschoben werden sollen.
Die rta Datei aus Quelle A soll allerdings zuletzt im Zielordner ankommen.

Mit xcopy und robocopy habe ich erfolglos probiert. Ich würde gerne den Ordnerinhalt mit den rta Dateien als Dateiliste verwenden.
Ich habe leider keine Idee mehr wie ich das umsetzen kann und würde mich über Vorschläge sehr freuen.
Schon mal ein großes Danke für Tipps.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 400159

Url: https://administrator.de/forum/gleichen-basisdateinamen-von-3-dateien-finden-und-dann-die-dateien-verschieben-400159.html

Ausgedruckt am: 02.06.2025 um 13:06 Uhr

rubberman
rubberman 01.02.2019 um 23:19:49 Uhr
Goto Top
Probier mal was in der Art
@echo off &setlocal

set "srcA=QuelleA"  
set "srcB=QuelleB"  
set "dstA=ZielA"  


for %%i in ("%srcA%\*.rta") do (  
  for %%j in ("%srcB%\%%~ni.*") do (  
    move "%%~fj" "%dstA%\"  
  )
  move "%%~fi" "%dstA%\"  
)

Grüße
Steffen
devbaum
devbaum 02.02.2019 um 06:49:35 Uhr
Goto Top
Hallo, vielen Dank.
Im Moment funktioniert es noch nicht.
Es werden alle rta Dateien aus srcA
nach dstA verschoben, auch die bei denen
keine 2 Dateien mit gleichen Basisnamen
in srcB vorhanden sind.
Die Dateien in srcB werden auch gar nicht erst verschoben.
Braucht man evtl. noch eine Prüfung ähnlich
wie "if exist" damit nur verschoben wird,
wenn wirklich 3 Dateien mit gleichem
Basisnamen vorhanden sind.
Aus srcA die rta und aus srcB die passende ftb und die ohne Dateiendung.
rubberman
rubberman 02.02.2019 um 12:51:22 Uhr
Goto Top
Zitat von @devbaum:
auch die bei denen keine 2 Dateien mit gleichen Basisnamen in srcB vorhanden sind.
OK, da hatte ich dich nicht richtig verstanden, dass es eine Voraussetzung ist, dass alle 3 Dateien vorhanden sein müssen.
Die Dateien in srcB werden auch gar nicht erst verschoben.
Dabei kann ich nicht helfen. Keine Ahnung wie du die Pfadangabe gemacht hast. Kenne ja nur deine Pseudopfade. Sind alle 3 Pfade absolut angegeben?

@echo off &setlocal

set "srcA=QuelleA"  
set "srcB=QuelleB"  
set "dstA=ZielA"  


for %%i in ("%srcA%\*.rta") do (  
  if exist "%srcB%\%%~ni" if exist "%srcB%\%%~ni.ftb" (  
    move "%srcB%\%%~ni" "%dstA%\"  
    move "%srcB%\%%~ni.ftb" "%dstA%\"  
    move "%%~fi" "%dstA%\"  
  )
)
devbaum
devbaum 02.02.2019 um 14:27:25 Uhr
Goto Top
Ja, ich teste aber erstmal lokal auf c:.
Tausend Dank. Das hat super funktioniert.
Nach dem langen probieren in den letzten Wochen, kann ich behaupten, dass ich es ohne Deine Hilfe nicht geschafft hätte.
Die beiden exist mußte ich in eine Zeile setzen.
Ich bin mal gespannt wie lange es mit den
ca. 50000 Dateien dauern wird.
Gibt es dann evtl. ein Risiko bei der
Ausführung vom Batch auf das ich achten muß?
Eine Frage habe ich noch.
Ist es immer sicher, dass das dritte move
auch wirklich erst nach Ende vom zweiten
ausgeführt wird?
rubberman
Lösung rubberman 02.02.2019 aktualisiert um 14:44:29 Uhr
Goto Top
Die beiden exist mußte ich in eine Zeile setzen.
Die sind doch auch bei mir in einer Zeile. Keine Ahnung was du meinst.
Gibt es dann evtl. ein Risiko bei der Ausführung vom Batch auf das ich achten muß?
Musst du testen. Mach ein Backup, aber das sollte eigentlich eine Selbstverständlichkeit sein. Generelles Risiko ist, dass du Dateien verschiebst, die noch gar nicht fertig geschrieben wurden. Aber auch das musst du selbst wissen, ob Dateien während der Laufzeit des Scripts erstellt werden oder nicht.
Ist es immer sicher, dass das dritte move auch wirklich erst nach Ende vom zweiten ausgeführt wird?
So steht es im Code. Der Kommandozeileninterpreter arbeitet die Codezeilen synchron ab.
devbaum
devbaum 02.02.2019 um 16:33:58 Uhr
Goto Top
Ok. Nochmal vielen Dank.