Назад | Перейти на главную страницу

с помощью xcopy или копирования для резервного копирования файлов?

У меня есть локальный диск, содержащий каталог для каждого пользователя:

c: \ user1 \
c: \ user2 \
c: \ user3 \

и у меня есть удаленный диск (через общий ресурс), содержащий то же дерево каталогов:

f: \ user1 \
е: \ пользователь2 \
f: \ user3 \

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

Есть ли способ добиться этого с помощью xcopy или copy плюс некоторой пакетной магии?

Спасибо!

РЕДАКТИРОВАТЬ: чтобы избежать путаницы: мне нужно проанализировать каталоги пользователей (может иметь ЛЮБОЕ имя), захватить файлы более новые, чем те, которые были скопированы в последний раз, и скопировать их в каталог с тем же именем на F: \

копировать . это не то, что я пытаюсь сделать. скорее:

for /f "tokens=*" %%a IN ('dir /b c:\users\*') do call dobackup.bat "%%a"

или похожие

Robocopy - ваш друг в этом. У него есть флаг, который сделает именно то, что вы хотите.

robocopy c:\ f:\ /mir /r:1 /sec

Это сделает зеркальную копию, повторяя попытку открытия файлов перед тем, как двигаться дальше, а также скопирует безопасность. Зеркальная копия также удалит файлы из F: \, которые больше не существуют на C: \, чего xcopy не может. Кроме того, после первой синхронизации будут скопированы только более новые файлы.

Если robocopy по какой-то причине невозможен, вы можете закрыть его с помощью xcopy.

xcopy C:\*.* F:\*.* /S/E/H/D

Это скопирует всю структуру C: \ в F: \, скопирует скрытые файлы и скопирует только новые. Однако он не удалит файлы из F: \, которые существуют в C: \.

Редактировать:

Возможно, это сделает то, что вы хотите:

 for /D %D in (C:\User*\) do xcopy  C:\User%D\*.* F:\User%D /s /e /d 08-01-2010

Это будет перебирать все каталоги с пользователем в них и копировать файлы новее, чем первое августа.

Хорошо, если я помещу командный файл в C: \ users \, тогда

for /D %%a IN (*) do call robocopy %%a\ f:\%%a\ *.txt /mir /r:1 /sec

работает