Пакет для поиска и перемещения дубликатов файлов определенного типа - PullRequest
0 голосов
/ 01 сентября 2018

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

@echo off
pushD \\server\pdf
for /r %%i in ( *.pdf ) do (
if exist "%userprofile%\desktop\F1\%%~nxi" ( move /y "%userprofile%\desktop\F1\%%~nxi" %userprofile%\desktop\F3 
) else echo File %%~nxi is not a duplicate
)
popD
pause

Что я должен добавить к выше для команды?

1 Ответ

0 голосов
/ 02 сентября 2018

Вы уже знаете о команде ForFiles, упомянув ее в дублирующем вопросе на DosTips ; так почему бы не использовать его?

PushD "\\server\pdf" 2>Nul && (
    ForFiles /S /M *.pdf /D 0 /C "Cmd /C If Exist \"%UserProfile%\Desktop\F1\@File\" If Not Exist \"%UserProfile%\Desktop\F3\@File\" Move \"%UserProfile%\Desktop\F1\@File\" \"%UserProfile%\Desktop\F3\""
    PopD)

Если вы предпочитаете, вы можете использовать Move с опцией /Y или вы можете забыть о If Exist и просто подавлять сообщения об ошибках, но общая идея должна работать для вас.

...