Verschieben eines bestimmten Dateityps auf dem gesamten Laufwerk in einen anderen Ordner

457
David

So,

Ich möchte alle JPG-Dateien auf dem gesamten Laufwerk (einschließlich anderer Benutzer) in einen Ordner auf dem Desktop verschieben.

Was ist der Befehl in CMD?

Der Ordner, in den ich die Dateien verschieben möchte, ist C: \ Users \ stefa_000 \ Desktop \ Allt

1
ein weiteres Duplikat: [Wie bekomme ich alle Bilddateien unter Windows 10?] (https://superuser.com/q/1349153/241386) phuclv vor 6 Jahren 0
@phuclv - Ihre Links markieren den wichtigen Punkt, was mit doppelten Namen in verschiedenen Ordnern zu tun ist. Die Frage impliziert auch, dass "C:" in die Suche eingeschlossen wird und ohne zusätzliche Skripte die JPGs im Zielordner gefunden werden. Ich würde zuerst geneigt sein, eine Liste der Dateien zu erstellen (`xcopy / l`?), Die untersucht werden kann: Mit Hilfe eines fortgeschrittenen Editors (z. B. notepad ++) kann die Dateiliste in` copy'-Befehle bearbeitet werden. Alle Dateien im Zielordner können entfernt und doppelte Namen verarbeitet werden. All dies könnte im laufenden Betrieb in einer Batchdatei gehandhabt werden, wäre aber recht komplex. AFH vor 6 Jahren 0

1 Antwort auf die Frage

1
harrymc

Die StackOverflow-Post- Batchdatei für Windows zum Kopieren und Aufbewahren von Duplikaten enthält in dieser Antwort ein vorgegebenes .batSkript mit zwei Argumenten: SourcePath TargetPath. Er kopiert rekursiv alle Dateien aus SourcePath und seinen Unterordnern in TargetPath, ignoriert Dateien aus dem Zielordner und fügt einen ansteigenden Zähler an den Basisnamen für Duplikate an.

::copyFlat sourcePath TargetPath @echo off setlocal disableDelayedExpansion  :: Initialize and validate arguments if "%~2" equ "" echo Error: Insufficient arguments>&2&exit /b 1 set "source=%~f1" if not exist "%source%\" echo Error: Source folder "%source%" does not exist>&2&exit /b 1 set "target=%~f2" if exist "%target%\" echo Error: Target folder "%target%" already exists>&2&exit /b 1  :: Do the work md "%target%" set /a n=0 for /r "%source%" %%F in (*) do if "%%~dpF" neq "%target%\" ( if exist "%target%\%%~nxF" ( set /a n+=1 set "full=%%F" set "name=%%~nF" set "ext=%%~xF" setlocal enableDelayedExpansion copy "!full!" "!target!\!name!_!n!!ext!" >nul endlocal ) else copy "%%F" "%target%" >nul )