Скопируйте файлы с определенным расширением в папку
Я хочу найти все файлы PDF с компьютера и поместить их в папку.
До сих пор у меня это:
mkdir d:\test chcp 65001 d: FOR /f "tokens=*" %%a in ('dir /s /b *.pdf') DO copy "%%a" d:\test\ c: FOR /f "tokens=*" %%a in ('dir /s /b *.pdf') DO copy "%%a" d:\test\ f: FOR /f "tokens=*" %%a in ('dir /s /b *.pdf') DO copy "%%a" d:\test\
По какой-то причине он не копирует все. В D: он скопировал 2126 файлов из 2400, а в F: он скопировал 274 из 284.
- Как преобразовать закрытый ключ SSH в .ppk в командной строке Windows?
- Пакет для открытия файлов с тем же расширением в подпапках в Windows
- Воспроизвести звук (возможно, WAV?) Из командной строки Windows
- Ping с прокси-аутентификацией в окнах
- В чкдске, что такое онлайн-сканирование?
Любые идеи, почему некоторые файлы PDF не копируются и как я могу это исправить?
- Как изменить разрешение экрана из командной строки в Windows 10?
- Windows CMD: «dir * .cpp» подстановочные символы «main.cpp_» и «main.cpp2»
- Использование Powercfg для удаления файла гибернации не работает, хотя я являюсь администратором
- Hilight / выберите файл с пакетным скриптом
- Как скопировать все файлы определенного типа в папку из командной строки?
- Рекурсивно удалять папки и файлы и исключать определенную подпапку
- Windows Batch Scripting: новый файл, соответствующий шаблону
- Как открыть Windows CMD, чтобы он запускался в текущей папке?
Вы можете подсчитать файлы и, таким образом, проверить наличие дубликатов:
md d:\test 2>nul set /a count=0 set /a dupli=0 for /r "d:\" %%i in (*.pdf) do ( if not exist "d:\test\%%~nxi" ( copy "%%~fi" "d:\test\%%~nxi" set /a count+=1 ) else set /a dupli+=1 ) echo %count% files copied, %dupli% not (duplicate files).
Поместите целевую папку на другой диск, чтобы избежать копирования самому себе.
Не имея много деталей, я предполагал, что есть дубликаты имен файлов. Копия в дескрипторе не будет запрашивать перезапись и пропустит файл.
Я подозреваю, что это происходит, потому что вы не находитесь в правильной папке при выполнении команды FOR.
проведение
D:
Просто изменяет диск, но не каталог. Если последним используемым каталогом диска D был D:\Example
, там будет команда, в которую вы попадете.
Есть три способа исправить это:
-
казнить
D: CD \
Перед командой FOR.
-
казнить
CD /DD:\
Перед командой FOR.
-
Укажите диск и каталог в самой команде FOR:
FOR /F "tokens=*" %%A in ('DIR /S /BD:\*.pdf') DO COPY "%%A" D:\test\