Как переместить файл определенного типа, найденный на всем диске, в другую папку

377
David

Так,

Я хочу переместить все файлы JPG на всем диске (включая других пользователей) в папку на рабочем столе.

Что за команда в CMD?

Папка, в которую я хочу переместить файлы: C: \ Users \ stefa_000 \ Desktop \ Allt

1
другой дубликат: [Как получить все файлы изображений в Windows 10?] (https://superuser.com/q/1349153/241386) phuclv 6 лет назад 0
@phuclv - Ваши ссылки подчеркивают важный момент, что делать с повторяющимися именами в разных папках. Кроме того, вопрос подразумевает, что `C:` будет включен в поиск, и без дополнительных сценариев будут найдены файлы JPG в целевой папке. Сначала я бы хотел создать список файлов (`xcopy / l`?), Который можно проверить: используя расширенный редактор (например,` notepad ++ `), список файлов можно редактировать с помощью команд` copy`; любые файлы в целевой папке могут быть удалены, а дублированные имена обработаны. Все это может быть обработано на лету в пакетном файле, но это будет довольно сложно. AFH 6 лет назад 0

1 ответ на вопрос

1
harrymc

В этом ответе StackOverflow публикует пакетный файл Windows для копирования и хранения дубликатов, в котором содержится предложенный сценарий с двумя аргументами: SourcePath TargetPath. Он рекурсивно копирует все файлы из SourcePath и его подпапок в TargetPath, игнорируя файлы из целевой папки и добавляя увеличивающийся счетчик к базовому имени для дубликатов..bat

::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 )