Команда XCOPY — копирование файлов и каталогов.
Команда XCOPY используется для копирования файлов и каталогов с сохранением их структуры. По сравнению с командой COPY имеет более широкие возможности и является наиболее гибким средством копирования в командной строке Windows
Формат командной строки:
XCOPY источник [целевой_объект] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:файл1[+файл2][+файл3]. ]
Параметры командной строки:
источник — Копируемые файлы.
целевой_объект — Расположение или имена новых файлов.
/A — Копирование только файлов с установленным архивным атрибутом; сам атрибут при этом не изменяется.
/M — Копирование только файлов с установленным архивным атрибутом; после копирования атрибут снимается.
/D:m-d-y — Копирование файлов, измененных не ранее указанной даты. Если дата не указана, заменяются только конечные файлы, более старые, чем исходные.
/EXCLUDE:файл1[+файл2][+файл3]. — Список файлов, содержащих строки с критериями для исключения файлов и папок из процесса копирования. Каждая строка должна располагаться в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, указав строку \obj\ или .obj, можно исключить все файлы из папки obj или все файлы с расширением OBJ соответственно.
/P — Вывод запросов перед созданием каждого нового файла.
/S — Копирование только непустых каталогов с подкаталогами.
/E — Копирование каталогов с подкаталогами, включая пустые. Эквивалентен сочетанию ключей /S /E. Совместим с ключом /T.
/V — Проверка размера каждого нового файла.
/W — Вывод запроса на нажатие клавиши перед копированием.
/C — Продолжение копирования вне зависимости от наличия ошибок.
/I — Если целевой объект не существует и копируется несколько файлов, считается, что целевой объект задает каталог.
/Q — Запрет вывода имен копируемых файлов.
/F — Вывод полных имен исходных и целевых файлов.
/L — Вывод имен копируемых файлов.
/G — Копирование зашифрованных файлов в целевой каталог, не поддерживающий шифрование.
/H — Копирование, среди прочих, скрытых и системных файлов.
/R — Перезапись файлов, предназначенных только для чтения.
/T — Создание структуры каталогов без копирования файлов. Пустые каталоги и подкаталоги не включаются в процесс копирования. Для создания пустых каталогов и подкаталогов используйте сочетание ключей /T /E.
/U — Копирование только файлов, уже имеющихся в целевом каталоге.
/K — Копирование атрибутов. При использовании команды XСOPY обычно сбрасываются атрибуты «Только для чтения».
/N — Использование коротких имен при копировании.
/O — Копирование сведений о владельце и данных ACL.
/X — Копирование параметров аудита файлов (подразумевает ключ /O).
/Y — Подавление запроса подтверждения на перезапись существующего целевого файла.
/-Y — Запрос подтверждения на перезапись существующего целевого файла.
/Z — Копирование сетевых файлов с возобновлением.
/B — Копирование символической ссылки вместо ее целевого объекта.
/J — Копирование с использованием небуферизованного ввода/вывода. Рекомендуется для очень больших файлов.
Ключ /Y можно установить через переменную среды COPYCMD.
Ключ /-Y командной строки переопределяет такую установку.
Примеры использования XCOPY
XCOPY /? — выдать краткую справку по использованию команды.
xcopy C:\users D:\copy1 — скопировать файлы из каталога C:\users в каталог D:\copy1 . Будет выполняться копирование без подкаталогов и только файлов без атрибутов «Скрытый» и «Системный». Для скопированных файлов будет установлен атрибут Архивный . Если каталог, в который выполняется копирование, не существует, то пользователю будет выдано сообщение:
Что означает D:\copy1:
имя файла или каталога
(F = файл, D = каталог)? D
После ответа D целевой каталог будет создан и копирование будет выполняться в D:\COPY1\. Для подавления запроса на создание целевого каталога используется параметр /I:
xcopy C:\users D:\copy1 /I
xcopy C:\users D:\copy1 /H /Y /C — копирование файлов, включая скрытые и системные, с подавлением запроса на перезапись существующих и возобновлением при ошибке. Если существующий в целевом каталоге файл имеет атрибут «Только чтение», то копирование не выполняется. Для перезаписи таких файлов используется ключ /R
xcopy C:\users D:\copy1 /H /Y /C /R /S — скопировать все файлы и подкаталоги ( /S ) с перезаписью существующих без запроса ( /Y ) , включая скрытые и системные. ( /H ) с перезаписью файлов с атрибутом «Только чтение» (/R) и игнорированием ошибок ( /C )
xcopy C:\users D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt — то же, что и в предыдущем случае, но текстовый файл C:\users\listnotcopy.txt задает признаки исключения из процедуры копирования. Пример содержимого файла:
\User1\ — исключить из копирования каталог C:\users\user1
All Users исключить из копирования каталог C:\users\All Users
de*.* — исключить из копирования все файлы и каталоги, начинающиеся на буквосочетание «de»
xcopy C:\users\*.exe D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt — то же, что и в предыдущем примере, но выполняется только копирование исполняемых файлов с расширением .exe .
xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I — копирование всех файлов с расширением .ini из каталога временных файлов в каталог D:\copy1\ini\ . Если целевой подкаталог \ini\ не существует, то он будет создан без запроса пользователю ( /I ) .
xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I /D:09-16-2013 — то же, что и в предыдущем примере, но выполняется копирование только тех файлов, у которых установлена дата изменения 16 сентября 2013 года и старше.
xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T — создать структуру папок диска C: в каталоге D:\copy1\LISTDIR . Копирование файлов не выполняется. Копируются только папки, включая пустые, скрытые и системные.
xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T /D:09-16-2013 воссоздать в каталоге D:\copy1\LISTDIR структуру папок диска C: , с датой изменения 16 сентября 2013 года и позже.
Для добавления новых файлов в каталоги и обновления существующих на более поздние версии, можно использовать команду REPLACE.
CMD/BAT: Копирование только новых файлов
Здравствуйте. Задача состоит в следующем:
На диске X:\ формируются файлы с расширением bak. Нужно в папку Y каждый день копировать только новые файлы (к примеру bat-файл запустится в 8 утра и должен скопировать файлы за сегодняшнее число).
Спасибо.
2 Ответ от smaharbA 2012-09-10 14:09:03 (изменено: smaharbA, 2012-09-10 14:13:57)
Re: CMD/BAT: Копирование только новых файлов
если без подпапок и дата создания совпадает с датой модификации
echo off
set s=y:\*.bak
set d=%homedrive%\моя папка\куда копирую\
mkdir «%y%» > nul 2>&1
xcopy /d:%date:~3,2%-%date:~0,2%-%date:~-4% «%s%» «%d%» /y
а так есть для этих целей forfiles
Я конечно далек от мысли. (с)
3 Ответ от angelraven 2012-09-10 14:31:30
Re: CMD/BAT: Копирование только новых файлов
smaharbA пишет:
если без подпапок и дата создания совпадает с датой модификации
Дата создания и модификации не совпадают. Файлы перезаписываются, поэтому дата создания не меняется.
4 Ответ от smaharbA 2012-09-10 14:49:54
Re: CMD/BAT: Копирование только новых файлов
пример копирует все с датой модификации равной или позднее текущей
Я конечно далек от мысли. (с)
5 Ответ от smaharbA 2012-09-10 15:27:04
Re: CMD/BAT: Копирование только новых файлов
если интересует именно дата создания, то либо forfiles либо примерно так
echo off setlocal ENABLEDELAYEDEXPANSION set s=x:\ set d=c:\моя папка\для копирования\ set ext=doc mkdir "%d%\" 2> nul set dd=25.03.2011 rem либо - set dd=%date% - если нужна текущая дата for /r "%s%" %%x in (*.%ext%) do ( for /f %%y in ('dir /o:-d /t:c "%%~x" ^| find "%%~nxx"') do ( set t=%%y set t=!t:~-4!!t:~3,2!!t:~0,2! if !t! geq %dd:~-4%%dd:~3,2%%dd:~0,2% ( xcopy "%%~x" "%d%\%%~px" /i /y ) ) )
Я конечно далек от мысли. (с)
6 Ответ от angelraven 2012-09-10 16:04:05
Re: CMD/BAT: Копирование только новых файлов
7 Ответ от yuriy2000 2012-09-11 21:03:55
Re: CMD/BAT: Копирование только новых файлов
если файлы копируются/создаются на диске X:, то можно использовать атрибут «Архивный»
скопировать все файлы с расширением .BAK и с атрибутом «Архивный» с диска X: на диск Y:
xcopy /s /m X:\*.bak y:\Backup
можно запускать сколько угодно раз в день — будут копироваться только «новые» файлы.
из Справки XCOPY
/M Копирует файлы только с атрибутом «Архивный»,
при этом атрибут «Архивный» отключается.
8 Ответ от angelraven 2012-09-12 08:25:05 (изменено: angelraven, 2012-09-12 08:34:26)
Re: CMD/BAT: Копирование только новых файлов
yuriy2000 пишет:
если файлы копируются/создаются на диске X:, то можно использовать атрибут «Архивный»
скопировать все файлы с расширением .BAK и с атрибутом «Архивный» с диска X: на диск Y:
xcopy /s /m X:\*.bak y:\Backup
можно запускать сколько угодно раз в день — будут копироваться только «новые» файлы.
из Справки XCOPY
/M Копирует файлы только с атрибутом «Архивный»,
при этом атрибут «Архивный» отключается.
Интересная мысль! Попробуем. Спасибо большое. Я еще попробовал вариант с использованием robocopy, это конечно не совсем cmd но раз уж она присутствует в системах начиная с Vista, почему бы и нет. В robocopy реализованы простые команды и параметры именно для копирования.
В моем случае код выглядит так:
net use o: \\192.168.1.4\backup_1c robocopy.exe "e:\backup_1c" "o:" *.bak /MAXAGE:1 net use o: /delete
Подключаем сетевой диск O:, копируем туда файлы не старее одного дня (/MAXAGE:1). Затем отключаем сетевой диск. Можно не использовать сетевой диск а указывать сразу путь для копирования \\имя компьютера\расшаренная папка
Копирование новых и измененных файлов с учетом атрибута LastModifiedDate в Фабрике данных Azure
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описан шаблон решения, который можно использовать для копирования новых и измененных файлов только по значению атрибута LastModifiedDate из файлового хранилища в любое целевое хранилище.
Информация о шаблоне решения
Этот шаблон сначала выбирает новые и измененные файлы только по их атрибуту LastModifiedDate, а затем копирует их из исходного хранилища данных в целевое.
Шаблон содержит одно действие:
- Копировать — копирует новые и измененные файлы только по их атрибуту LastModifiedDate из хранилища файлов в целевое хранилище.
В шаблоне определены шесть параметров:
- FolderPath_Source — путь к папке, в которой можно считать файлы из исходного хранилища. Вам нужно заменить значение по умолчанию на правильный путь к папке.
- Directory_Source — путь к вложенной папке, в которой можно считать файлы из исходного хранилища. Вам нужно заменить значение по умолчанию на правильный путь к вложенной папке.
- FolderPath_Destination — путь к папке в целевом хранилище, в которую нужно скопировать файлы. Вам нужно заменить значение по умолчанию на правильный путь к папке.
- Directory_Destination — путь к вложенной папке в целевом хранилище, в которую нужно скопировать файлы. Вам нужно заменить значение по умолчанию на правильный путь к вложенной папке.
- LastModified_From — используется для выбора файлов, у которых значение атрибута LastModifiedDate больше или равно этому значению даты и времени. Чтобы выбрать только новые файлы, которые не были скопированы в последний раз, это значение datetime может быть временем, когда конвейер был активирован в последний раз. Вы можете заменить значение по умолчанию «2019-02-01T00:00:00Z» ожидаемым значением LastModifiedDate в часовом поясе UTC.
- LastModified_To — используется для выбора файлов, у которых значение атрибута LastModifiedDate меньше этого значения даты и времени. Чтобы выбрать только новые файлы, которые не были скопированы в предыдущих запусках, это значение даты и времени может быть в настоящее время. Вы можете заменить значение по умолчанию «2019-02-01T00:00:00Z» ожидаемым значением LastModifiedDate в часовом поясе UTC.
Использование шаблона решения
- Перейдите в коллекцию шаблонов на вкладке «Автор» в Фабрика данных Azure, а затем нажмите + кнопку, конвейер и, наконец, коллекцию шаблонов.
- Найдите шаблон Копировать новые файлы только lastModifiedDate , выберите его, а затем нажмите кнопку «Продолжить«.
- Создайте новое подключение к целевому хранилищу. Это хранилище, в которое требуется скопировать файлы.
- Создайте новое подключение к исходному хранилищу. Это хранилище, из которого нужно копировать файлы.
- Выберите Использовать этот шаблон.
- На панели откроется доступный конвейер, как показано в следующем примере:
- Выберите «Отладка«, напишите значение для параметров и нажмите кнопку «Готово«. На рисунке, приведенном ниже, мы задали параметры следующим образом.
- FolderPath_Source = sourcefolder
- Directory_Source = subfolder
- FolderPath_Destination = destinationfolder
- Directory_Destination = subfolder
- LastModified_From = 2019-02-01T00:00:00Z
- LastModified_To = 2019-03-01T00:00:00Z
В примере указывается, что файлы, которые были в последнее время изменены в интервале времени (2019-02-01T00:00:00Z до 2019-03-01T00:00:00Z) будут скопированы из исходной папки пути источника или вложенной папки в папку назначения пути назначения или вложенной папки. Эти времена или папки можно заменить собственными параметрами.



- FolderPath_Source = sourcefolder. Вы можете заменить это значение папкой в своем исходном хранилище данных.
- Directory_Source = subfolder. Вы можете заменить это значение вложенной папкой в своем исходном хранилище данных.
- FolderPath_Destination = destinationfolder. Вы можете заменить это значение папкой в своем целевом хранилище данных.
- Directory_Destination = subfolder. Вы можете заменить это значение вложенной папкой в своем целевом хранилище данных.
- LastModified_From = @trigger().outputs.windowStartTime. Это системная переменная из триггера, определяющего время последнего запуска конвейера.
- LastModified_To = @trigger().outputs.windowEndTime. Это системная переменная из триггера, определяющего время, когда конвейер активируется на этот раз.


Связанный контент
forum.farmanager.com
Есть потребность в простой операции: копировать с одной панели на другую только отличающиеся по дате и/или размеру файлы. Как ее реализовать в фаре ?
Спасибо.
ObSerV Posts: 53 Joined: Wed 29 Jul, 2009 06:26 Been thanked: 1 time
Re: Копирование только отличающихся файлов
Post by ObSerV » Sun 12 May, 2013 11:55
хм. Из стандартных есть f9 — команды — сравнение папок.
И есть настройка «копировать только новые/обновленные» в диалоге копирования.
ObSerV
AK Posts: 2 Joined: Sun 12 May, 2013 11:32
Re: Копирование только отличающихся файлов
Post by AK » Sun 12 May, 2013 12:06
Сравнение папок не учитывает подкаталоги (их тоже очень и очень много).
В диалоге копирования нет пункта «новые/обновленные». Есть: Вместо, Пропустить, Имя, Добавить, Отменить.
Параллельно возник вопрос: можно ли в фаре менять права доступа НТФС (как в тоталкоммандере) ?
HaRT Moderator Posts: 10871 Joined: Tue 30 Aug, 2005 17:21 Has thanked: 221 times Been thanked: 359 times
Post by HaRT » Sun 12 May, 2013 12:28
AK
Поищите тут по форуму по словам “синхронизация каталогов”.
А для отдельных вопросов заводите отдельные темы, не надо всё валить в одну кучу.