![Kann ich die Unterverzeichnisse eines Verzeichnisses durchsuchen und eine Datei mit einer bestimmten Erweiterung in einen neuen Ordner kopieren?](https://rvso.com/image/1595495/Kann%20ich%20die%20Unterverzeichnisse%20eines%20Verzeichnisses%20durchsuchen%20und%20eine%20Datei%20mit%20einer%20bestimmten%20Erweiterung%20in%20einen%20neuen%20Ordner%20kopieren%3F.png)
Neuling hier – ich habe dieses Terminalskript, das unter Windows nicht zu funktionieren scheint, um Unterverzeichnisse in einem Verzeichnis nach allen Dateien mit einer bestimmten Erweiterung zu durchsuchen und diese in ein neues Verzeichnis zu verschieben.
find ./ -name '*.xlsx' -exec cp -prv '{}' \Documents\...' ";"
Ich habe mich gefragt, ob dasselbe mit einem MATLAB- oder einem anderen Windows-Skript möglich wäre. Mein ultimatives Ziel ist es, die Daten in all diesen xlsx-Dateien in einer Datei zusammenzufassen. Vielen Dank im Voraus für die Hilfe.
Antwort1
So durchlaufen Sie ein Verzeichnis in cmd.exe:
for /r "C:\Your\Directory" %A in (*.xlsx) do (move /y "%A" "C:\New\Directory\%~nxA")
Das /r
in FOR
durchläuft alle Dateien, die im angegebenen Verzeichnis liegen. Das /y
in move
unterdrückt eine Eingabeaufforderung, die Sie fragt, ob das Verschieben der Datei in Ordnung ist. Die Verwendung von Anführungszeichen um Datei-/Verzeichnispfade ist empfehlenswert, falls Leerzeichen vorhanden sind. Standardmäßig werden Unterordner durchgelaufen.
Referenz:FOR-Schleifenbefehle
Wenn Sie eine Batch-Lösung bevorzugen, richte ich sie lieber mit Variablen wie diesen ein:
@echo off
set "old=C:\Your\Directory"
set "new=C:\New\Directory"
for /r "%old%" %%A in (*.xlsx) do (
move /y "%%A" "%new%\%%~nxA"
)
pause
Der Hauptunterschied (meiner Meinung nach) zwischen Batch und einfacher Befehlszeile besteht darin, dass es etwas einfacher ist, Änderungen vorzunehmen, wenn Sie einfach zurückgehen und eine Variable bearbeiten können, ohne möglicherweise einen Pfad mehrmals in derselben Datei ändern zu müssen. Beachten Sie auch, dass Ihr Parameter in einer Batchdatei %A
geändert wird .%%A