Я хочу найти все файлы 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.

Есть идеи, почему некоторые файлы PDF не копируются и как я могу это исправить?

3 ответа3

1

Вы можете сосчитать файлы и проверить наличие дубликатов:

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

Поместите целевую папку на другой диск, чтобы избежать копирования на себя.

0

Не имея много деталей, я думаю, что есть дубликаты имен файлов. Копирование в скрипте не будет запрашивать перезапись и будет пропускать файл.

0

Я подозреваю, что это происходит потому, что вы не в нужной папке при выполнении команды FOR.

проведение

D:

просто меняет диск, а не каталог. Если последним использованным каталогом диска D был D:\Example , команда отправляется туда.

Есть три способа исправить это:

  • казнить

    D:
    CD \
    

    перед командой FOR.

  • казнить

    CD /D D:\
    

    перед командой FOR.

  • Укажите диск и каталог в самой команде FOR:

    FOR /F "tokens=*" %%A in ('DIR /S /B  D:\*.pdf') DO COPY "%%A" D:\test\
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .