Показать полную графическую версию : Копирование новых файлов
Andrey947
18-03-2016, 12:42
Здравствуйте.
Есть каталог C:\AAA с файлами *.*
Есть каталог C:\BBB с подкаталогами 333, 444 и т.д., в которых могут быть те же файлы, что и в C:\111
Нужно скопировать из C:\AAA в С:\IN только те файлы, которых нет в C:\BBB (включая подкаталоги).
megaloman
19-03-2016, 17:01
...которых могут быть те же файлы, что и в C:\111 Может быть C:\AAA? В этом случае @Echo Off
Set "AAA=Z:\A A A"
Set "BBB=Z:\B B B"
Set "In=Z:\In"
FOR /F "usebackq tokens=1,2,* delims=\" %%i IN (`Dir "%AAA%\*.*" /B /S /A:-D 2^>nul`) DO (
If Not Exist "%BBB%\%%k" Call :Todir "%%i\%%j\%%k" "%In%\%%k"
)
GoTo :Eof
:Todir
If Not Exist "%~dp2" md "%~dp2"
Copy %1 %2 >nul
Я Ваши имена AAA и BBB заменил на A A A и B B B для отладки, Вы, естественно, подставите свои реальные пути
Andrey947
21-03-2016, 13:01
Сейчас при запуске bat-файла в Z:\In копируется полностью содержимое Z:\A A A.
Может из-за структуры каталогов? Она такая:
С:\ХХХ\ААА
С:\ХХХ\ВВВ с подкаталогами
С:\ХХХ\IN
Пути все прописаны правильно.
megaloman
21-03-2016, 22:17
Как была поставлена задача, так она и сделана. Решение делалось для случая, когда папки в корневом каталоге. Ниже решение для случая когда папка ААА является подпапкой папки в корневом каталоге, как у Вас указано во втором варианте постановки задачи. Кстати, критичным для этого решения является вложенность папки ААА, другие папки могут быть где угодно. Причём, если папки In не существует, то она будет создана, если, конечно, это возможно@Echo Off
Set "AAA=Z:\xxx\A A A"
Set "BBB=Z:\У попа была собака\xxx\B B B"
Set "In=Z:\Поп ее любил\In"
FOR /F "usebackq tokens=1,2,3,* delims=\" %%i IN (`Dir "%AAA%\*.*" /B /S /A:-D 2^>nul`) DO (
If Not Exist "%BBB%\%%l" Call :Todir "%%i\%%j\%%k\%%l" "%In%\%%l"
)
GoTo :Eof
:Todir
If Not Exist "%~dp2" md "%~dp2"
Copy %1 %2 >nul
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.