Ich habe die folgende Datei- und Ordnerstruktur (echte Namen verwenden):Wie kann ich bestimmte Dateien aus mehreren Unterordnern in ihren jeweiligen übergeordneten Ordner verschieben? (Windows Batch)
Carabidae/Pterostichinae/FolderNameXXX/dor/StackXXX/files.tif
Mein Problem ist, dass ich eine bestimmte Datei erhalten muß, PM * *, von den StackXXX Ordnern in sie. jeweilige/dor übergeordnete Ordner. Der StackXXX-Ordner kann dann gelöscht werden.
Es gibt Hunderte von Ordnernamen. Idealerweise möchte ich eine Batch-Datei, die ich aus dem Carabidae-Ordner ausführen kann.
Dies muss eine Batch-Datei sein, da ständig neue FolderNames hinzugefügt werden.
Nach vieler Suche fand ich eine halb-Arbeitslösung von this StackOverflow answer:
for /f "delims==" %%i in ('dir /a:d /b') do for /f "delims==" %%f in ('dir %%i /a:d /b') do (move "%%i\%%f\PM*.*" "%%i"&&rd "%%i\%%f" /s /q)
es die Datei verschiebt und löscht den Ordner, wie ich will. Das Problem ist jedoch, dass es nur funktioniert, wenn es aus einem FolderName-Ordner ausgeführt wird, was den zeitsparenden Zweck des Skripts zunichtemacht. Ich weiß nicht, wie ich es ändern kann, um in Unterordner zu gelangen, damit ich es aus dem obersten Ordner ausführen kann.
Vielen Dank für jede Hilfe! Hier
'for/r' kann Ihnen helfen ... – SteveFest
Ich dachte es auch, aber es hat nicht mit dieser Codezeile funktioniert. Ich habe versucht, sowohl 'for/f 'und jeder einzeln zu ersetzen, hat keine der Zeiten funktioniert ... – trilobutt
Verstehst du, wie' for/r funktioniert? Bitte überprüfen Sie https://ss64.com/nt/for_r.html für weitere Informationen und Methoden der Verwendung – SteveFest