Мои заметки по IT

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Мои заметки по IT » cmd » xcopy


xcopy

Сообщений 1 страница 17 из 17

1

Местонахождение

Windows\system32

Описание

Extended Copy Utility

Утилита командной строки для копирования файлов и папок.

Синтаксис

XCOPY источник [результат] [/A|M] [/D[:дата]] [/i] [/P] [/S[/E]] [/W] [/C] [/Q] [/F] [/L] [/H] [/R] [/T] [/u] [/K] [/Y|/-Y] [/N] [/V] [/G] [/O] [/X] [/Z]
Параметры

источник
Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь.
результат
Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию.
/A
Копирует только те файлы, которые имеют установленный атрибут архивный. При использовании параметра /a атрибут архивный у исходных файлов не меняется.
/M
Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов.
/D[:дата]
Копирует только файлы, измененные не ранее заданной даты. Если параметр дата не указан, то команда xcopy копирует только файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.
/I
Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат - это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом.
/P
Запрашивает подтверждение при создании каждого файла-результата.
/S
Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
/E
Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t.
/W
Выводит сообщение с ожиданием подтверждения начала копирования:
Нажмите любую клавишу, чтобы начать копирование файлов
/C
Игнорирует ошибки.
/Q
Отменяет вывод на экран сообщений команды xcopy.
/F
Выводит имена исходных файлов и файлов-результатов в процессе копирования.
/L
Отображает список копируемых файлов, но само копирование не происходит.
/H
Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы.
/R
Копирует файлы с атрибутом Только для чтения
/T
Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e.
/U
Копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата.
/K
Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут «только для чтения».
/Y
Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
/-Y
Выдает запрос на подтверждение перезаписи существующего конечного файла.
/N
Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS.
/V
Проверяет каждый скопированный файл на соответствие его оригиналу.
/G
Создает незашифрованные файлы-результаты.
/O
Копирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL).
/X
Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL).
/Z
Копирует по сети в режиме перезапуска. Если во время фазы копирования теряется сетевое подключение (например, если сервер переходит автономный режим, разрывая подключение), копирование возобновляется после восстановления подключения. Использование параметра /z команды вызывает также отображение доли (в процентах) завершенной операции копирования для каждого файла.
/?
Выводит справку.
Примечание

Сравнение команд xcopy и diskcopy
Команда xcopy должна быть использована вместо diskcopy при копировании файлов и подкаталогов на диск другого формата. Так как команда diskcopy копирует диски по дорожкам, требуется, чтобы исходный диск и диск-результат имели одинаковый формат. Для команды xcopy это требование не нужно. Обычно следует использовать команду xcopy, если только не требуется получить два диска с одинаковыми образами.

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

Код завершения Описание
0 Файлы скопированы без ошибок
1 Файлы для копирования не найдены
2 Нажата комбинация CTRL+C для остановки команды xcopy
4 Возникла ошибка инициализации. Недостаточно места в памяти или на диске, введено неверное имя диска или неверный синтаксис вызова команды
5 Диск защищен от записи
Примеры

Чтобы копировать все файлы и подкаталоги (включая пустые подкаталоги) с диска A на диск B, введите:

xcopy a: b: /s /e

Чтобы включить в операцию копирования предыдущего примера системные и скрытые файлы следует использовать параметр /h:

xcopy a: b: /s /e /h

Чтобы обновить файлы в каталоге \Reports файлами из каталога \Rawdata, измененными после 29 декабря 1993 года, введите:

xcopy \rawdata \reports /d:29-12-1993

Чтобы обновить файлы предыдущего примера, уже существующие в каталоге \Reports, независимо от их даты, введите следующую команду:

xcopy \rawdata \reports /u

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

xcopy \rawdata \reports /d:29-12-1993 /l > xcopy.out

Список файлов, которые были бы скопированы, находится в файле Xcopy.out.

Чтобы скопировать каталог \Customer и все подкаталоги \\Public\Address на сетевой диск H, сохранить у файлов атрибут «только для чтения», введите команду:

xcopy \customer h:\public\address /s /e /k /p

Чтобы выдать предыдущую команду, убедиться, что команда xcopy создает каталог \Address и устранить вывод сообщение о создании нового каталога, добавьте параметр /i следующим образом:

xcopy \customer h:\public\address /s /e /k /p /i

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

@echo off
rem COPYIT.BAT копирует все файлы во всех подкаталогах
rem исходного диска или каталога (%1) на другой диск

rem или в другой каталог (%2)

?? xcopy %1 %2 /s /e

??if errorlevel 4 goto lowmemory
?if errorlevel 2 goto abort
?if errorlevel 0 goto exit

??:lowmemory ?
echo Недостаточно памяти для копирования файлов,
задан недопустимый ?echo диск или ошибка в синтаксисе командной строки.
?goto exit
??
:abort ?
echo Нажата комбинация CTRL+C для остановки копирования.
?goto exit ?
?
:exit

Эта пакетная программа может быть использована для копирования всех файлов каталога C:\Prgmcode и его подкаталогов на диск B следующим образом:

copyit c:\prgmcode b:

Командный интерпретатор подставляет C:\Prgmcode вместо параметра %1 и B вместо параметра %2, затем использует команду xcopy с параметрами /e и /s. Если при выполнении xcopy произошла ошибка, пакетная программа считывает код завершения и переходит на метку, указанную в соответствующей инструкции IF ERRORLEVEL. В результате на экран выводится сообщение о характере ошибки и осуществляется выход из пакетной программы.

0

2

http://winchanger.narod.ru/winprograms/xcopy.htm

0

3

Программ для создания резервных копий (backup, бэкап) великое множество. Есть и платные, есть и бесплатные. В некоторых используются «мастера», которые позволяют указать массу параметров, не прибегая к сложному процессу настройки.

Однако сам процесс резервирования на самом же деле - обычное копирование. Есть конечно варианты, вроде: архивирования, отслеживание изменений и т.д., но для большинства случаев сам алгоритм сводится к простым действиям:

выбор исходных данных (каталог, файлы);
выбор куда копировать (каталог);
непосредственно копирование.
Так вот для того, чтобы выполнить все эти операции совсем не обязательно прибегать к помощи сторонних программ. Всё необходимое уже есть в Windows.
Для того, чтобы скопировать файл/каталог используется команда xcopy. Она имеет много параметров, но в общем случае указывается так:

0

4

xcopy "D:\myfiles\*.*" "j:\backup\myfiles\*.*"

0

5

Данная команда скопирует каталог «d:\myfiles\» в «j:\backup\myfiles\».
Итак наши действия очень просты. Вначале откроем Notepad2. В нем нужно указать те каталоги, которые следует резервировать. Лично у меня важные данные хранятся в нескольких каталогах: «txt», «work» и т.д.

Вторым параметром мы указываем куда следует скопировать. Обычно я для резервирования использую внешний жесткий диск (USB).

Для того, чтобы Windows при каждом его подключении присваивала одну и ту же букву диска, нужно войти в Панель управления - Администрирование - Управление Компьютером - Управление дисками. На подключенном диске кликните правой кнопокй мыши и выберите «Изменить букву диска или путь к диску...». В открывшемся окне выберите «Изменить» и укажите нужную букву. Например, у меня указано «J».
Для удобства лучше сохранять имена каталогов, чтобы потом не запутаться. А сам бэкап я размещаю в отдельном каталоге «backup».

Алгоритм копирования будет таков: мы будем копировать только новые файлы, старые будут затираться. При этом мы не будем удалять уже несуществующие в исходном каталоге файлы. Всё это достигается указанием параметров для xcopy.

Вот рабочий пример резервирования кошельков WEBMONEY и Яндекс-Деньги:

0

6

xcopy "C:\Program Files\WEBMONEY\*.*" "j:\backup\WEBMONEY\*.*" /E /F /H /R /K /Y /D
xcopy "C:\Program Files\Wallet\*.*" "j:\backup\Wallet\*.*" /E /F /H /R /K /Y /D

0

7

Эти строки нужно скопировать в Notepad2 и сохранить в файле с расширением «.bat», например «backup.bat». Теперь нам достаточно только запустить его и все будет сделано автоматически.
Теперь обратите внимание, что пути мы указываем в кавычках «"» - это требование Windows для длинных имен. Каталоги разделяются обратным слэшем «\». В конце указываются параметры для xcopy.

То есть вам нужно только указать ваши каталоги для резервирования и сохранить как «backup.bat». Вы можете сделать несколько таких файлов: процесс копирования может иногда занимать много времени, поэтому какие-то совсем критичные данные я копирую чаще - для них существует другой файл «QiuсkBACKUP.BAT».

0

8

Естественно вам нужно сделить за тем, чтобы на приёмном диске было достаточно места.

0

9

Теперь следующий момент, с которым вы можете столкнуться - неверная кодировка текста. Дело в том, что русские буквы для DOS (где и происходит копирование) отличаются от Windows (где вы создали bat-файл). Например у меня есть каталог «c:\Избранное\». Если я запущу bat-файл, то ничего не произойдет, поскольку xcopy его просто не найдет. Поэтому наш bat-файл нужно преобразовать в DOS-кодировку (её часто называют «OEM»).

Для этого мы выделяем такие строчки в Notepad2 и жмем Ctrl+Shift+O (или Edit - Convert - To OEM Text). Вы увидите «белиберду», но не пугайтесь, так и должно быть. В моем примере это выглядит так: «c:\?§Ўа ­­®Ґ\»

0

10

Если у вас есть Total Commander, то вы можете просмотреть этот файл по F3 и в просмотрщике переключить кодировку - клавиша «S».

0

11

Следующая задача, которой я не пользуюсь, но возможно вам пригодится - это копирование актуальной версии каталога, а старый бэкап переименовывается в «old».

Здесь задача совсем несложная: вначале нужно удалить старый «old», после этого переименовать текущий бэкап в «old» и скопировать как обычно xcopy. Вот пример резервирования каталога «c:\work\»:

0

12

del "j:\backup\work_old\" /s /q
rmdir "j:\backup\work_old\" /s /q
rename "j:\backup\work\" "work_old"
xcopy "c:\work\*.*" "j:\backup\work\*.*" /E /F /H /R /K /Y /D

0

13

Команда «del» удаляет все файлы из каталога. Команда «rmdir» удаляет пустой каталог. Команда «rename» переименовывает каталог или файлы. А командой «xcopy» мы, как обычно, копируем файлы.

0

14

использование WinRar

c:\winrar\winrar.exe u -as -r -y -s -rr f:\arhiv\texts.rar c:\texts
c:\winrar\winrar.exe u -as -r -y -s -rr f:\arhiv\passwords.rar c:\private\passwords
c:\winrar\winrar.exe u -as -r -y -s -rr f:\arhiv\prikaz.rar d:\work\prikaz
В результате его работы в папке arhiv диска F: будут созданы три файла: texts.rar, passwords.rar, prikaz.rar, содержащие полные копии соответствующих исходных папок.

Первый запуск этого BAT-файла может быть довольно продолжительным, т.к. архиватору придется полностью упаковать все файлы из исходных папок. Зато повторные запуски будут только изменять содержимое в уже созданных архивах и поэтому время их работы будет намного меньше.

0

15

http://fit-media.com/post_1203529769.html

0

16

http://www.cyberforum.ru/cmd-bat/thread792016.html

0

17

Примеры использования:

1) Простой пример — копирование содержимого каталога C:\A в каталог C:\B (включая файлы, атрибуты и метки времени), рекурсивно включая пустые каталоги (/E):

Код:
robocopy C:\A C:\B /E

2) Копировать содержимое каталога C:\A рекурсивно (/E), включая все атрибуты файлов (/COPYALL, эквивалентно /COPY:DATSOU, D=данные, A=аттрибуты, T=метки времени, S=безопасность=списки контроля доступа NTFS, O=владелец, U=аудит), не повторять попытки для заблокированных файлов (/R:0) (по умолчанию задан один миллион повторных попыток копирования), сохранять оригинальные метки времени у каталогов (/DCOPY:T — начиная с версии XP026 или более поздней):

Код:
robocopy C:\A C:\B /COPYALL /E /R:0 /DCOPY:T

3) Создать зеркальную копию каталога C:\A в каталоге B на сетевом ресурсе \\backupserver, удалить из каталога B все отсутствующие в каталоге C:\A файлы (/MIR), использовать журнал возобновления (/Z) на случай потери сетевого соединения:

Код:
robocopy C:\A \\backupserver\B /MIR /Z

4) Скопировать файл file1.txt из папки c:\folder1 в папку c:\folder2:

Код:
robocopy.exe c:\folder1 c:\folder2 file1.txt

5) Скопировать файлы, измененные за последние 5 дней (исключая сегодня).

Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /maxage:5 /minage:1

6) Переместить все файлы:

Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /move /e

7) Скопировать файлы за исключением скрытых (/xa:h):

Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /e /xa:h

или за исключением read-only (/ia:rs):

Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /ia:rs

При копировании также можно менять атрибуты файлов, при помощи опции A+ (добавить атрибут) or A- (удалить атрибут). Скопировать все файлы и задать им атрибут read-only:

Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /e /A+:r

8) Скопировать все файлы по шаблону (расширению), пустые папки не копировать:

Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" *.doc *.ppt /s

9) Скопировать все файлы размером от 1000 до 60000 байт:

Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /e /max:60000 /min:1000

10) Исключить из копирования папку AppData (/XD AppData):

Код:
Robocopy "C:\Users\Administrator" "\\NAS\BACKUP\Administrator" /MIR /XA:SH /XD AppData /XJD

11) Создать 32 потока (/MT:32) копирования файлов:

Код:
Robocopy "C:\Users\Administrator" \\NAS\BACKUP\Administrator /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32

В примере мы используем опцию /MT[:n], где n – это число от 1 до 128, которое определяет количество потоков. По умолчанию, если параметр /MT не указан, используется 8 потоков.

12) Переписать весь ACL, при этом не переписывая сами файлы:

Код:
robocopy <source /> /secfix /xo /xn /xc

13) Пример использования в скрипте:

Код:
echo Start backup time: %DATE% %TIME% >> g:\BC\backup_time.txt
robocopy.exe S:\ g:\BC\MK\ /MIR /R:1 /W:1 /NP /TEE /LOG:g:\BC\00_sync.log
echo End backup time: %DATE% %TIME% >> g:\BC\backup_time.txt
NET USE \\server01\IPC$ /USER:login password
NET USE \\fileserver\IPC$ /USER:login password
c:\reskit\robocopy \\fileserver\c$\work \\server01\e$\backup /MIR /SECFIX /TIMFIX /NP /LOG+:D:\logs\robocopy\backup_work.log
NET USE \\server01\IPC$ /DEL
NET USE \\fileserver\IPC$ /DEL

Полный список команд доступен на странице Microsoft TechNet — Robocopy

Данная утилита идет из коробки в Windows 7 и Server 2008. На более старых ОС ее может не оказаться (например, на XP и Server 2003 из коробки ее точно нет). В таком случае можно скачать и установить Windows Server 2003 Resource Kit Tools: вот отсюда. В этот тулкит, кроме всего прочего, входит наш инструмент.

Итак, вот пример использования данной утилиты:

Код:
robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /R:2 /W:5

В данном примере:
Мы копируем папку "исходная папка", находящуюся на локальном диске D:
Мы копируем эту папку на компьютер \\192.168.0.1 в папку "целевая папка"
/E : Мы копируем все подпапки и файлы
/Z : Включаем поддержку докачки (на случай обрыва связи)
/COPY:TDASO : Копируем все атрибуты и ACL прав доступа NTFS (но не копируем атрибуты аудита)
/DCOPY:T : Копируем время создания папок
/M : Копируем только файлы с установленным атрибутом "A - Архивный" и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы.
/R : Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем "не удалось" срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию = 1 миллионы, т.е. бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа.
/W : Задержка в секундах между попытками копирования. По-умолчанию = 30 секундам.

Заметка. Очень рекомендую задавать вручную параметры /R и /W, иначе при автоматической синхронизации она попросту зависнет, встретив на своем пути ошибку доступа.

Много больше опций Вы можете почерпнуть из хелпа:

Код:
robocopy /?

Чем эта утилита хороша по сравнению с XCOPY:
Она умеет работать с файлами, длина имени которых больше 256 символов
Она умеет делать зеркало, т.е. чистую синхронизацию, при которой файлы, удаленные в папке-источнике, будут удалены и в папке назначения.

Для того, чтобы зеркалировать папки (т.е. удалять в папке назначения все файлы, которые более не существуют в папке-источнике) - нужно добавить ключ "/PURGE":
Код Bash
robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /PURGE

А вот несколько примеров запуска этой утилиты:

Скопировать файлы, измененные за последние 5 дней (исключая сегодня):

Код:
robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /maxage:5 /minage:1

Переместить все файлы (не копировать):

Код:
robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /move /e

Копировать только указанные файлы по шаблону

Код:
robocopy D:\исходная_папка \\192.168.0.1\целевая_папка *.xls *.doc *.txt /e

0


Вы здесь » Мои заметки по IT » cmd » xcopy