Разное

Bat файла копирование: Как реализовать копирование файлов *.bat? — Хабр Q&A

Содержание

Резервное копирование: использование bat-файла — Defoult.ru

В статье:

  • Опишу и приведу примеры создания бэкапов используя командную строку.
  • “Подробно” распишу команду xCOPY и как применить WinRar в создании бэкапа.
  • Создание папкиархива с именем: текущая дата.

Процитирую баш.орг.ру:

Год за годом все новые админы бэкапят серверные винты на логических разделах тех же самых винтов.

Резервное копирование с использованием xCOPY

Пример скрипта, копирующего файлы в каталог f:backupnew, при втором запуске переименовывает каталог new в old, создает заново каталог new и копирует файлы. Т.е. батника дает возможность хранить “двухдневные” бэкапы:

del “f:backupold” /s /q

rmdir “f:backupold” /s /q

rename “f:backupnew” “old”

mkdir “f:backupnew”

xcopy “D:123*. *” “f:backupnew*.*” /E /F /H /R /K /Y /D

Можно поступить иначе,  например команда md %date:~0,2%.%date:~3,2%.%date:~6,4% создает папку, имя которой –  текущая дата:

mkdir “f:backup%date:~0,2%.%date:~3,2%.%date:~6,4%”

xcopy “e:superBD*.*” “f:backup%date:~0,2%.%date:~3,2%.%date:~6,4%*.*” /E /F /H /R /K /Y /D

rem Должно работать и без mkdir, т.к. xcopy сам бы создал папку. Подстраховка =)

Поясню по используемым ключам XCOPY:

/E Копирует все подкаталоги, включая пустые.

/F Выводит имена исходных файлов и файлов-результатов в процессе копирования.

/H Включает в операцию копирования скрытые и системные файлы. По умолчанию системные файлы игнорируются.

/R Копирует файлы с атрибутом «только для чтения».

/K Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут.

/Y Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.

/D[:мм-дд-гггг] Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.

О дополнительных ключах xcopy можно почитать на microsoft.com

Резервное копирование с использованием WinRAR

del “f:backupold” /s /q

rmdir “f:backupold” /s /q

rename “f:backupnew” “old”

mkdir “f:backupnew”

“C:Program FilesWinRARRar.exe” a -m5 -r -t -dh -idp f:backupnewbackup.rar “D:superBD*.*” >> f:backupnewbackup.log

Если прикрутить сюда вышеописанную %date:~0,2%.%date:~3,2%.%date:~6,4%, то

“C:Program FilesWinRARRar.exe” a -m5 -r -t -dh -idp f:backup.rar “E:superBD*.*” >> f:%date:~0,2%. %date:~3,2%.%date:~6,4%.log

ren “f:backup.rar” “%date:~0,2%.%date:~3,2%.%date:~6,4%.rar”

log-файлы я стер

Подробнее о ключах запуска Rar.exe можно почитать в файле C:Program FilesWinRARRar.txt

После того как батник создан и проверен – можно создать задание на автоматический запуск, например ночью, когда юзвер спит . Жми пусквыполнить – вводи control schedtasks – жми ентер. Откроется планировщик заданий, там проще некуда.

Удачи!

З.Ы. Не бэкапьте на логических разделах тех же самых винтов.

BAT скрипт для резервного копирования папки

Набросал ещё один маленький BAT скрипт для резервного копирование папки. Внесите свои данные и через scheduler настройте расписание резервного копирования.

Ссылки

7-Zip — бесплатный архиватор

Функции

  • С помощью xcopy делает резервные копии папки.
  • Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
  • С помощью 7-Zip архивирует резервные копии.
  • Удаляет старые резервные копии.

Код

@echo off
SetLocal EnableDelayedExpansion

rem =============================
rem ====== admin variables ======
rem =============================

set DirName=my_folder
set SourceDir=C:\%DirName%
set BackupDir=B:\%DirName%\daily\
set NumFolders=10

rem =============================
rem ======== 7-Zip path =========
rem =============================

set a7z=%ProgramFiles%\7-Zip\7z.exe

rem =============================
rem == create backup directory == 
rem ==== DD.MM.YYYY_hhmmmss =====
rem =============================

set h=%time:~0,2%
set h=%h: =0%
set FullBackupDir=%BackupDir%%date%_%h%%time:~3,2%%time:~6,2%\
md %FullBackupDir%

rem =============================
rem ====== copy directory =======
rem =============================

xcopy %SourceDir% %FullBackupDir%%DirName%\ /E /F /H /R /K /Y /D 2>nul >nul

rem =============================
rem ====== zip directory ========
rem =============================

"%a7z%" a -tzip -bb0 -bd -sdel "%FullBackupDir%%DirName%. zip" "%FullBackupDir%" 2>nul >nul

rem =============================
rem ==== remove old folders =====
rem =============================

for /f "tokens=* delims=" %%D in ('dir %BackupDir% /ad /b /o-d') do (
	if not %%D=="" (
		if not !NumFolders!==0 (
			set /a NumFolders-=1
		) else (
			rd /s /q %BackupDir%%%D 2>nul >nul
		)
	)
)
  • DirName — название папки
  • SourceDir — что бэкапим
  • BackupDir — куда бэкапим
  • NumFolders — сколько подпапок с бэкапами хранить
  • a7z — путь к 7z.exe

Пример настройки расписания

В Task Scheduler настраиваем новое задание.

Выбираем пользователя, от имени которого будет выполняться резервное копирование. После сохранения задания нас спросят пароль от него. Ставим галку Run whether user is logged or not — запускать даже если юзер не залогинен.

В триггерах настраиваем расписание. У меня резервное копирование происходит раз в сутки.

Указываем ссылку на наш BAT файл.

Настраиваем условия.

Проверяем настройки. OK.

Теперь папка будет резервироваться раз в день. С настройкой NumFolders=10 в BAT файле мы будем хранить данные за последние 10 дней.

Если хотите хранить ежедневные и ежемесячные резервные копии — сделайте два BAT файла и два расписания резервного копирования в разные папки.

описание команды и примеры использования

  • Bot
  • 29.01.2020
  • 7 428
  • 0
  • 02.11.2020
  • 6
  • 5
  • 1
  • Содержание статьи

Описание

XCOPY — Копирует файлы и каталоги, включая подкаталоги.

Синтаксис

xcopy источник [результат] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:мм-дд-гггг]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:файл1[+[файл2]][+[файл3]] [{/y|/-y}] [/z]

Параметры

ПараметрОписание
источникОбязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь.
результатЗадает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию.
/wВыводит следующее сообщение с ожиданием подтверждения начала копирования: Нажмите любую клавишу, чтобы начать копирование файлов
/pЗапрашивает подтверждение при создании каждого файла-результата.
/cИгнорирует ошибки.
/vПроверяет каждый скопированный файл на соответствие его оригиналу.
/qОтменяет вывод на экран сообщений команды xcopy.
/fВыводит имена исходных файлов и файлов-результатов в процессе копирования.
/lОтображает список копируемых файлов.
/gСоздает незашифрованные файлы-результаты.
/d[:мм-дд-гггг]Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.
/uКопирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата.
/iЕсли источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом.
/sКопирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
/eКопирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t. /t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e.
/kКопирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут «только для чтения».
/rКопирует файлы с атрибутом «только для чтения».
/hКопирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы.
/aКопирует только те файлы, которые имеют установленный атрибут «архивный». При использовании параметра /a атрибут «архивный» у исходных файлов не меняется.
/mКопирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов.
/nКопирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS.
/oКопирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL).
/xКопирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL) (подразумевается наличие /p). /exclude:файл1[+[файл2]][+[файл3]] Определяет список файлов, содержащих строки.
/yУстраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
/-yВыдает запрос на подтверждение перезаписи существующего конечного файла.
/zКопирует по сети в режиме перезапуска.
/?Отображает справку в командной строке.

Примечания

    • Использование параметра /exclude
      Построчный вывод всех строк в каждом файле. При соответствии выведенной строки части пути копируемого файла, он исключается из процесса копирования. Например, если указана строка «\Obj\», исключается все файлы, расположенные в каталоге «Obj». Например, если указана строка «.obj», исключается все файлы с расширением .obj.
    • Использование параметра /z
      Если во время фазы копирования теряется сетевое подключение (например, если сервер переходит автономный режим, разрывая подключение), копирование возобновляется после восстановления подключения. Использование параметра /z команды вызывает также отображение доли (в процентах) завершенной операции копирования для каждого файла.
    • Использование параметра /y в переменной среде COPYCMD. Можно применять параметр /y в переменной среде COPYCMD. Эта настройка может быть переопределена использованием параметра /-y в командной строке. По умолчанию если команда copy выполняется не в пакетной программе, при замене требуется подтверждение.
    • Копирование зашифрованных файлов
      При копировании файлов на том, не поддерживающий шифрованную файловую систему (EFS), возникнет ошибка. Следует предварительно расшифровать файлы или копировать их на том, поддерживающий EFS.
    • Добавление файлов
      Чтобы объединить файлы, укажите один файл-результат, но несколько файлов-источников (с помощью подстановочных знаков или формата файл1+файл2+файл3).
    • Значение по умолчанию для результата
      Если параметр результат не задан, xcopy будет копировать файлы в текущий каталог.
    • Указание в качестве результата файла или каталога
      Если параметр результат не содержит существующий каталок или не заканчивается обратной чертой(\), выводится следующее сообщение:Что означает destination:
      имя файла или каталога
      (F = файл, D = каталог)?Нажмите F, если файл или файлы должны копироваться в файл. Нажмите D, если файл или файлы должны копироваться в каталог.Чтобы устранить вывод этого сообщения, используйте параметр /i. В результате чего, команда xcopy предполагает, что результат является каталогом, если источник престаляет собой несколько файлов или каталогов.
    • Использование команды xcopy для установки атрибута «архивный» для файлов результата
      Команда xcopy создает файлы с установленным атрибутом «архивный», независимо от состояния этого атрибута у исходных файлов.
    • Сравнение команд xcopy и diskcopy
      Команда xcopy должна быть использована вместо diskcopy при копировании файлов и подкаталогов на диск другого формата. Так как команда diskcopy копирует диски по дорожкам, требуется, чтобы исходный диск и диск-результат имели одинаковый формат. Для команды xcopy это требование не нужно. Обычно следует использовать команду xcopy, если только не требуется получить два диска с одинаковыми образами.
    • Коды завершения программы xcopy

Для анализа кодов завершения, выведенных командой xcopy, используйте параметр уровень_ошибки в командной строке if пакетных программ.

В следующей таблице перечислены коды завершения с кратким описанием.

Код завершенияОписание
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. В результате на экран выводится сообщение о характере ошибки и осуществляется выход из пакетной программы.

Справочная информация

Как скопировать папку в cmd / how copy folder in cmd ?

 

Для копирования папки в cmd зайдите в командную строку:

1) Нажмите сочетание клавиш Windows+R

2) В открывшемся окне Выполнить наберите cmd

 

В командной строке вы можете воспользоваться командой copy или xcopy

Пример копирования пустой папки C:\test_copy в папку с:\program files


Одно из отличий команды xcopy от copy – возможность копирования разрешения папки

xcopy /y /o /e «c:\test copy\*. *» «c:\Program Files\test copy\*.*»

Ключ /Y — копирование без подтверждения, если папка уже существует.

Ключ /O – копирование разрешений на папку

Ключ /E – копирование каталогов с подкаталогами включая пустые

Полную справку по xcopy можно посмотреть набрав в командной строке –

xcopy /?

С копированием папок на английском языке все очень просто.

А как скопировать папку с русскими буквами в cmd?

 

xcopy /y /o /e «c:\Тестовая папка» «c:\Program Files\Тестовая папка\*.*»

 

Если записать данную команду в bat или cmd файл скопировав в блокнот и сохранив с расширением cmd или bat то копирование работать не будет.

 

Результат работы команды

 

Для копирования папки с русским названием сохраните команду в файл прямо в командной строке

 

echo xcopy /y /o /e «c:\Тестовая папка» «c:\Program Files\Тестовая папка\*. * » >> c:\test_copy.cmd

 

Русский текст адаптируется под соответствующую кодировку

Копирование будет работать штатно.

 

For copy  folder in cmd, go to the command prompt:

1) Press keys Windows+R

2) In Run menu type cmd and press Enter

At the command prompt, you can use the copy or xcopy command

 

An example of copying empty folders C:\test_copy in the folder C:\Program files


One of the differences between xcopy and copy is the ability to copy folder permissions

xcopy /y /o / e «c:\test copy\*.*» «c:\Program Files\test copy \*.*»

The /Y — switch copies without confirmation if the folder already exists.

Key /O — copy permissions to the folder

Key /E – copies directories and sub-directories including empty ones

Full help for xcopy can be found by typing in the command line –

xcopy /?

 

Copying folders in English is very simple.

 

And how to copy the folder with Russian letters in cmd?

 

xcopy /y /o /e «c:\Тестовая папка» «c:\Program Files\Тестовая папка\*.*»

If you write this command in bat or cmd file copied to Notepad and save with the extension cmd or bat then copying will not work.

 

Result run test_copy.cmd

 

To copy a folder with a Russian name, save the command to a file directly on the command line

echo xcopy /y /o /e «c:\Тестовая папка» «c:\Program Files\Тестовая папка\*.* » >> c:\test_copy.cmd

 

The Russian text is adapted to the appropriate encoding

The copy will work normally.

Создание архива 7zip с помощью bat-файла

Для того чтобы быстро создавать архив с помощью архиватора 7-zip, напишем такой скрипт и сохраним его с расширением *.bat:


start cmd /c ""c:\Program Files\7-Zip\7z. exe"" a d:\Baсkup\%DATE:~0,2%.%DATE:~3,2%.%DATE:~-4%.7z d:\Projects

Этот скрипт автоматически называет файл в соответствии с текущей датой. Чтобы скрипт запускался автоматически, можно создать в планировщике задач Windows задание и указать расписание: Панель управления – Администрирование – Планировщик заданий. В планировщике нажимаем Создать задачу, на вкладке Действие добавляем Запуск программы и указываем путь к нашему bat-файлу. Настраиваем расписание на вкладке Триггеры.

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

Кстати, приведённый макрос %DATE% будет нормально форматировать дату только если язык системы – русский. Если ваша система имеет другой язык, то при форматировании даты могут возникнуть проблемы. В этом случае используйте %DATE% без подстрок:. d:\Baсkup\%DATE%.7z

Также можно создавать архивы с паролем. Это убережёт Ваши данные, если они попадут не в те руки. Всё что нужно для создания архива с паролем – добавить в конец предыдущего скрипта параметр -p, а сразу за ним без пробела пароль, например:


start cmd /c ""c:\Program Files\7-Zip\7z.exe"" a d:\Baсkup\%DATE:~0,2%.%DATE:~3,2%.%DATE:~-4%.7z d:\Projects -pMyPassWord

Можно также указать степень сжатия от 0 до 9, например, -mx9 означает максимальную степень сжатия.

Также имеет смысл убрать некоторые расширения файлов из создаваемого архива, например, временные *.tmp и *.cache файлы. Для этого нужно добавить их в список исключений вот таким образом: -x!*.tmp -x!*.cache. Здесь аргумент -x обозначает «исключить» (eXclude), а восклицательный знак означает поисковый запрос (wildcard), который выбирает файлы с заданным расширением.

Полный перечень возможных параметров командной строки, передаваемых исполняемому файлу архиватора 7zip, приведён на рисунке:

Перечень аргументов командной строки архиватора 7-zip

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

Копировать файлы путем перетаскивания гораздо удобнее и быстрее, чем с помощью традиционного Copy-Paste. Функция Drag-and-Drop также позволяет копировать объекты в разные папки, удерживая при этом зажатой клавишу Ctrl, но как ни крути, это занимает намного больше времени, чем если бы копирование производилось во все выбранные папки одновременно. Представьте, что вам нужно скопировать некий файл во все вложенные папки какого-то каталога, причем количество этих вложенных папок достигает нескольких десятков.

Понятно, что ни Copy-Paste, ни Drag-and-Drop не позволят вам сделать это за минуту, здесь нужен более продвинутый метод.

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

Скопируйте приведенный ниже код и вставьте его в обычный текстовый файл.

@echo off
for /D %%a in ("C:\Data\*.*") do xcopy /y /d "D:\Im.jpg" "%%a"

В коде скрипта есть два пути C:\Data и D:\Im. jpg, первый — это путь к каталогу со всеми вложенными в него папками, в которые будет копироваться файл, второй — это путь к копируемому объекту, служить которым может не только файл, но и папка.

Замените пути своими и сохраните отредактированный файл с расширением BAT или CMD.

Название скрипта оставляем на ваше усмотрение.

Запустите скрипт и файл будет скопирован в дочерние папки указанного родительского каталога до первого уровня вложенности.

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

Копирование файлов — Windows CMD

Копирование файлов — Windows CMD — SS64.com

Скопируйте один или несколько файлов в другое место.

 Синтаксис 
COPY [ options ] [/ A | / B] source [/ A | / B] [+ source2 [/ A | / B] ...] [ destination [/ A | / B]] КОПИРОВАТЬ source1 + source2 .. destination [ options ] Ключ источник : путь к файлу или файлам, которые нужно скопировать./ A: текстовый файл ASCII (по умолчанию) / B: Копия двоичного файла - копирует расширенные символы. / D: разрешить создание файла назначения в расшифрованном виде. назначение : путь для нового файла (ов). / V: Убедитесь, что файл назначения после записи доступен для чтения. Никакого сравнения с исходными файлами не происходит. / N: Если возможно, создавать только короткие имена файлов (8.3) в место назначения.Эта опция может помочь при копировании между дисками которые отформатированы по-разному, например NTFS и VFAT, или при архивировании данные на ISO9660 CDROM. / L: Если источник является символической ссылкой, скопируйте ссылку на цель вместо фактического файла, на который указывает ссылка на источник. / Y: подавлять запрос подтверждения при перезаписи файлов. / -Y: включить запрос подтверждения при перезаписи файлов./ Z: копировать файлы в перезапускаемом режиме. Если копирование прервано на полпути, он перезапустится, если это возможно. (использовать в медленных сетях)

Объединение файлов

Чтобы объединить файлы, укажите в качестве места назначения один файл, но несколько файлов.
в качестве источника. Чтобы указать более одного файла, используйте подстановочные знаки или перечислите файлы
со знаком + между ними (файл1 + файл2 + файл3)
При копировании нескольких файлов таким способом должен существовать первый файл, иначе
копировать не удастся, обходной путь — COPY null + file1 + file2 dest1

Бинарные копии

«КОПИЯ / B. .. «скопирует файлы в двоичном режиме.

Параметры / A и / B могут появляться в разных местах с разным значением в зависимости от местоположения.
Перед любым исходным — они установят режим по умолчанию для всех исходных и целевых файлов .
После источника — они установят режим для этого источника .
После назначения — они установят режим для назначения .Z (клавиша управления и Z)

Запрос на перезапись файла назначения

В Windows 2000 и выше действие по умолчанию — запрос перезаписи, если команда не выполняется из пакетного сценария.
Чтобы принудительно перезаписать файлы назначения, используйте переменную среды COPYCMD:
SET COPYCMD = / Y

Уровни ошибок

Если файл (ы) были успешно скопированы% ERRORLEVEL% = 0
Если файл не найден или заданы неверные параметры = 1

COPY принимает пути в формате UNC

Примеры:

Копировать файл в текущую папку
КОПИРОВАТЬ исходный_файл. doc newfile.doc

Копировать из другой папки / каталога:
COPY «C: \ my work \ some file.doc» «D: \ New docs \ newfile.doc»

Укажите только источник с подстановочным знаком скопируйте все файлы в текущий каталог:
COPY «C: \ my work \ *. doc»

Укажите источник с подстановочным знаком и место назначения как один файл, это обычно полезно только для файлов с обычным текстом.
КОПИРОВАТЬ «C: \ my work \ *. Txt» «D: \ New docs \ комбинированный.txt»

Создать пустой (нулевой байт) файл:
КОПИРОВАТЬ NUL EmptyFile.txt

Тихая копия (без обратной связи на экране)
COPY source_file.doc newfile.doc> nul

Скопируйте файл, но не перезаписывайте его, если целевой файл уже существует, этот метод работает только для одного файла, без подстановочных знаков:

Echo n | COPY / -y c: \ demo \ source_file.txt c: \ dir \ dest.txt

КОПИРОВАНИЕ — внутренняя команда.

«Кажется, успех связан с действием. Успешные мужчины продолжают двигаться. Они делают ошибки, но не уходят »~ Конрад Хилтон

Связано:

ROBOCOPY — надежное копирование файлов и папок.
XCOPY — Копирование файлов и папок.
MOVE — Переместить файл из одной папки в другую.
Q126457 — Команды VERIFY ON, COPY / V, XCOPY / V не сравнивают данные.
Эквивалент PowerShell: Copy-Item — копирование элемента из одного места в другое.
Эквивалентная команда bash (Linux): cp — скопируйте один или несколько файлов в другое место.


Авторские права © 1999-2020 SS64.com
Некоторые права защищены.

MS-DOS и командная строка Windows

.

Обновлено: 21.05.2018 компанией Computer Hope

Команда copy позволяет пользователям копировать один или несколько файлов в другое место.

Наличие

Копировать — это внутренняя команда, доступная для следующих операционных систем Microsoft.

Копировать синтаксис

Синтаксис Windows Vista и более поздних версий

 КОПИЯ [/ D] [/ V] [/ N] [/ Y | / -Y] [/ Z] [/ L] [/ A | / B] источник [/ A | / B] [+ источник [/ A | / B] [+ . ..]] [пункт назначения [/ A | / B]] 
источник Задает файл или файлы для копирования.
/ A Указывает текстовый файл ASCII.
/ B Обозначает двоичный файл.
/ D Разрешить создание файла назначения в расшифрованном виде.
направление Задает каталог или имя файла для нового файла (ов).
/ V Проверяет правильность записи новых файлов.
/ № Использует короткое имя файла, если оно доступно, при копировании файла с именем, отличным от 8dot3.
/ У Подавляет запрос на подтверждение перезаписи существующего файла назначения.
/ -Y Вызывает запрос на подтверждение перезаписи существующего файла назначения.
/ Z Копирует сетевые файлы в перезапускаемом режиме.
/ л Если источник является символической ссылкой, скопируйте ссылку на целевой вместо фактического файла, на который указывает исходная ссылка.

Переключатель / Y может быть предварительно установлен в переменной среды COPYCMD. Этот параметр можно переопределить с помощью / -Y в командной строке.По умолчанию запрашивается перезапись, если только команда COPY не выполняется из пакетного сценария.

Чтобы добавить файлы, укажите один файл в качестве назначения, но несколько файлов в качестве источника (с использованием подстановочных знаков или формата файл1 + файл2 + файл3).

Windows XP и более ранний синтаксис

 КОПИЯ [/ A | / B] источник [/ A | / B] [+ источник [/ A | / B] [+ ...]] [пункт назначения] [/ A | / B]] [/ V] [/ Y | / -Y] 
источник Задает файл или файлы для копирования.
/ A Указывает текстовый файл ASCII.
/ B Обозначает двоичный файл.
направление Задает каталог или имя файла для нового файла (ов).
/ V Проверяет правильность записи новых файлов.
/ У Подавляет запрос на подтверждение перезаписи существующего файла назначения.
/ -Y Вызывает запрос на подтверждение перезаписи существующего файла назначения.

Переключатель / Y может быть предварительно установлен в переменной среды COPYCMD. Этот параметр можно переопределить с помощью / -Y в командной строке.

Чтобы добавить файлы, укажите один файл в качестве назначения, но несколько файлов в качестве источника (с использованием подстановочных знаков или формата файл1 + файл2 + файл3).

Примеры копирования

 копировать * .txt c: \ 

В приведенном выше примере мы используем подстановочный знак для копирования всех файлов .txt (нескольких файлов) из текущего каталога в корневой каталог c: \.

 копия *. * A: 

Скопируйте все файлы в текущем каталоге на дисковод гибких дисков.

 скопировать autoexec.bat c: \ windows 

Скопируйте файл autoexec. bat, обычно находящийся в корневом каталоге, и скопируйте его в каталог Windows; autoexec.bat можно заменить любым файлом (ами).

 копировать win.ini c: \ windows / y 

Скопируйте файл win.ini из текущего каталога в каталог Windows. Поскольку этот файл уже существует в каталоге Windows, он обычно запрашивает, хотите ли вы перезаписать файл.Однако с переключателем / y вы не получите никаких подсказок.

 копия "компьютер надежда.txt" надежда 

Скопируйте файл «computer hope.txt» в каталог Hope. Всякий раз, когда вы имеете дело с файлом или каталогом с пробелом, он должен быть заключен в кавычки. В противном случае вы получите ошибку «Получение:« Неверный синтаксис команды »». ошибка.

 скопируйте myfile1.txt + myfile2.txt 

Скопируйте содержимое myfile2.txt и объедините его с содержимым myfile1.Z, а затем нажмите Enter. Более простой способ просматривать и редактировать файлы в MS-DOS — использовать команду редактирования.

Копирование файлов с использованием командной строки (Tips. Net)

Если вы не возражаете, если вы набираете больше текста и меньше щелкаете мышью, вы можете выполнять множество действий из командной строки.(Отображение окна командной строки рассматривается в другом совете.) Одна вещь, которую вы можете сделать из командной строки, — это копировать файлы. Команда копирования из командной строки — COPY , и она принимает два (или более) параметра. Первый параметр указывает файл, который необходимо скопировать, а второй параметр указывает, куда следует скопировать файл.

Итак, допустим, у вас есть файл с именем «C: \ Temp \ BatFun.bat», и вы хотите скопировать его в «C: \ Bat \ BatFun.bat». Вы должны ввести в командной строке следующее:

C: \> КОПИРОВАТЬ C: \ Temp \ BatFun. летучая мышь C: \ Bat \ BatFun.bat
 

Файл BatFun.bat в каталоге \ Temp остается там, а его копия создается в каталоге \ Bat. Конечно, вы можете указать любое имя для места назначения, так что у вас может быть файл \ Temp \ BatFun.bat, который вы разрабатываете и тестируете, но когда вы будете удовлетворены им, вы можете захотеть скопировать его на свой \ Bat и присвойте ему имя DirList.bat. Это достигается путем простого изменения имени параметра назначения:

C: \> КОПИРОВАТЬ C: \ Temp \ BatFun.летучая мышь C: \ Bat \ DirList.bat
 

Для одновременного копирования нескольких файлов можно использовать подстановочный знак. Допустим, у вас есть несколько файлов .bat в каталоге \ Temp, которые должны работать вместе, и вы хотите скопировать их все в каталог \ Bat. Возможно, файлы называются C: \ Temp \ Dir1.bat, C: \ Temp \ Dir2.bat и C: \ Temp \ Dir3.bat. Чтобы скопировать их все в каталог \ Bat, введите команду:

C: \> КОПИРОВАТЬ C: \ Temp \ Dir? . Bat C: \ Bat
 

Подстановочный знак «?» обозначает ровно один фактический символ в исходном параметре.Обратите внимание, что вам не нужно указывать ничего, кроме целевого каталога (без обратной косой черты в конце) в качестве второго параметра. Это связано с тем, что COPY автоматически использует имя файла, указанное первым параметром, в качестве имени файла, который будет использоваться в каталоге \ Bat. Другими словами, вы получите Dir1.bat, Dir2.bat и Dir3.bat в вашем каталоге C: \ Bat.

Команда COPY также может использоваться для объединения (объединения) файлов. Это делается путем указания файлов, которые должны быть объединены в качестве исходного параметра, но разделенных знаками плюс.Затем в качестве параметра назначения указывается ровно одно имя файла. Затем все файлы, разделенные знаками «плюс», будут добавлены друг к другу в указанном порядке, и этот объединенный файл будет создан там, где указывает параметр назначения.

Так что, возможно, в вашем каталоге C: \ Temp есть несколько текстовых файлов с именами Text1.txt, Text2.txt и Text3.txt. Вы хотите объединить их в главный файл (мы также поместим его в ваш каталог \ Temp) под названием TextAll.txt. Это можно сделать с помощью следующей команды:

C: \ Temp> КОПИРОВАТЬ Text1.txt + Text2.txt + Text3.txt TextAll.txt
 

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

C: \ Temp> Копировать текст? .Txt TextAll.txt
 

Таким образом, технически вам не нужно использовать знаки плюса для разделения исходных файлов. На самом деле вам просто нужно иметь несколько исходных файлов (разделенных знаком плюс или обозначенных с помощью подстановочных знаков) и ровно один файл назначения.

Как и большинство операторов командной строки, есть переключатели, которые можно использовать с командой COPY для определения определенных типов поведения. Вы можете отобразить полный синтаксис команды, просто вызвав ее и добавив «/?» переключатель так:

C: \ Temp> COPY /?
 

Посмотрев этот вывод, вы можете указать « / Y », например, чтобы указать COPY не спрашивать вас о перезаписи существующего файла.

Этот совет (13098) применим к Windows 7, 8 и 10.

Автор Биография

Барри Дизерт

Барри был профессиональным компьютерным специалистом более 35 лет, работая на различных должностях, таких как руководитель технической группы, руководитель проекта и разработчик программного обеспечения.В настоящее время он инженер-программист, специализирующийся на разработке пользовательских приложений под Microsoft Windows. Когда не работает с Windows или не пишет советы, Барри — писатель-любитель. Его первая научно-популярная книга называется «Хронологический комментарий к откровению». Узнать больше о Барри …

Слайд-шоу Windows

Если у вас есть папки, содержащие изображения, вы можете отобразить их в виде слайд-шоу.Этот совет объясняет, как это сделать.

Узнать больше

Обновление драйвера устройства

Если вы подключаете к компьютеру новое устройство или вам нужно обновить драйвер текущего устройства, этот совет предоставляет общие …

Узнать больше

Ограничение количества попыток входа в систему

Вероятно, вы не хотите позволять кому-то постоянно пытаться войти в вашу систему, пока они, наконец, не угадают ваш …

Узнать больше

Как сделать резервную копию с помощью пакетных файлов

2004-12-10 (обновлено: 2020-09-30), Филип
Теги: резервное копирование, командный файл, сценарий

Иногда полезно или даже необходимо просто скопировать существующие каталоги на другой жесткий или сетевой диск, а не использовать более сложные методы резервного копирования. Можно сравнительно легко создать резервную копию нескольких каталогов, просто щелкнув мышью, создав и запустив пакетный файл.Этот файл можно запустить вручную с рабочего стола, добавить в автозагрузку или запланировать периодическое выполнение по мере необходимости.

Пакетные файлы имеют сравнительно простой синтаксис и могут иметь множество применений, поэтому этот метод также может быть хорошим примером для обучения. Вы можете просто скопировать текст ниже и вставить его в Блокнот. Создайте новый файл с расширением .bat или .cmd, а не txt.

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

@echo off
:: variables
set drive = G: \ Backup
set backupcmd = xcopy / s / c / d / e / h / i / r / y

echo ### Резервное копирование моих документов…
% backupcmd% «% USERPROFILE% \ My Documents» «% drive% \ My Documents»

echo ### Резервное копирование избранного …
% backupcmd% «% USERPROFILE% \ Favorites» «% drive% \ Избранное «

echo ### Резервное копирование электронной почты и адресной книги (Outlook Express) …
% backupcmd%»% USERPROFILE% \ Application Data \ Microsoft \ Address Book «»% drive% \ Address Book «
% backupcmd% «% USERPROFILE% \ Local Settings \ Application Data \ Identities» «% drive% \ Outlook Express»

echo ### Резервное копирование электронной почты и контактов (MS Outlook)…
% backupcmd% «% USERPROFILE% \ Local Settings \ Application Data \ Microsoft \ Outlook» «% drive% \ Outlook»

echo ### Резервное копирование реестра …
, если не существует «% drive% \ Реестр «mkdir»% drive% \ Registry «
, если существует»% drive% \ Registry \ regbackup.reg «del»% drive% \ Registry \ regbackup.reg «
regedit / e»% drive% \ Registry \ regbackup.reg «

:: используйте приведенный ниже синтаксис для резервного копирования других каталогов …
::% backupcmd%» … исходный каталог . .. «»% диск% \ … целевой каталог … «

echo Резервное копирование завершено !
@pause

В приведенном выше примере выполняется резервное копирование «Мои документы», «Избранное», электронной почты / адресной книги Outlook Express (все для текущего пользователя) и реестра Windows.Он копирует файлы в каталог, указанный в переменной% drive% или в «g: \ Backup». Если сценарий запускается несколько раз, он будет перезаписан, только если исходные файлы новее. При необходимости он создаст подкаталоги и сохранит атрибуты файлов. Он может копировать системные и скрытые файлы.

В приведенном выше файле все строки, начинающиеся с «::», являются комментариями. «Set drive =» и «set backupcmd =» в верхней части определяют две переменные (на которые ссылаются% drive% и% backupcmd%), которые используются несколько раз в файле; первая — это расположение верхнего каталога, в котором мы хотим сделать резервную копию, а вторая — фактическая команда копирования со всеми необходимыми переключателями. Все строки «эха» в файле просто выводят строку текста на экран, а строки, начинающиеся с% backupcmd%, являются собственно командами для выполнения.

Обратите внимание, что большинство папок в приведенном выше примере резервного копирования являются подкаталогами% USERPROFILE% … Можно просто создать резервную копию всего профиля пользователя с помощью «Мои документы», «Избранное», Outlook Express, Outlook и т. Д., Создав резервную копию этого файла. одна папка. Вот пример (предполагается, что указанные выше переменные «drive» и «backupcmd» установлены):

% backupcmd% «% USERPROFILE%» «% drive% \% UserName% — profile»

Резервное копирование Другое Каталоги и сетевые ПК

Вы можете создавать резервные копии других каталогов, просто создавая похожие строки:

% backupcmd% «…source dir … «»% drive% \ … destination dir … «

Например, если вы хотите сделать резервную копию» C: \ Program Files \ Microsoft Office «в место назначения» G : \ Backup \ MS Office «(и сохраните структуру каталогов), вам нужно добавить следующую строку в командный файл:

% backupcmd%» C: \ Program Files \ Microsoft Office «»% drive% \ MS Офис «

Вот еще один пример резервного копирования профиля администратора на машине в локальной сети с именем компьютера» Lianli «:

% backupcmd%» \\ Lianli \ c \ Documents and Settings \ Administrator «»% drive % \ Lianli — профиль администратора «

Помните, что вы должны сохранить командный файл с любым из них. bat или .cmd, а затем дважды щелкните его, чтобы запустить.

Использование текущей даты

Иногда бывает полезно создать папки с датой, включенной в имя папки. Вот как установить текущую дату в папке переменных (при условии формата даты в системе США):

set folder =% date: ~ 10,4% _% date: ~ 4,2% _% date: ~ 7, 2%
% backupcmd% «… исходный каталог …» «% диск% \% папка% \ … целевой каталог …»

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

установить час =% времени: ~ 0,2%
если «% час: ~ 0,1%» == «» установить час = 0% время: ~ 1,1%
установить папку =% date: ~ 10, 4% _% date: ~ 4,2% _% date: ~ 7,2% _% hour% _% time: ~ 3,2%
% backupcmd% «. .. исходный каталог …» «% drive % \% folder% \ … destination dir … «

Пример — каталоги с датой

В приведенном ниже примере мы сначала устанавливаем 3 переменные: диск, папку и backupcmd.Переменная «drive» определяет корневой каталог наших резервных копий. «Папка» принимает значение дня из 2 цифр от текущей даты (формат даты в США, принимая 2 цифры из выходных данных команды даты, начиная с 7-го символа), которую мы будем использовать в качестве подкаталога. Третья переменная, «backupcmd», определяет нашу команду резервного копирования с соответствующими переключателями командной строки, которые мы хотим использовать.

@echo off
:: переменные
установить диск = D: \ Backup
установить папку =% date: ~ 7,2%
установить резервную копиюcmd = xcopy / s / c / d / e / h / i / r / k / y

echo ### Резервное копирование каталога…
% backupcmd% «C: \ Program Files \ somedirectory» «% drive% \% folder%»

echo Резервное копирование завершено!
@pause

В этом примере выполняется резервное копирование папки «C: \ Program Files \ somedirectory» в «D: \ Backup \ [dd]», где [dd] — текущий день месяца. Через месяц у нас будет 30 копий резервной копии в день … И из-за выбранных параметров командной строки xcopy следующие резервные копии будут перезаписывать только более новые файлы, что ускоряет последующее резервное копирование. В качестве альтернативы вы можете добавить строку для удаления каталога% folder% перед выполнением% backupcmd%, если вы предпочитаете начать чистку (и это займет больше времени).

Очистка

Обычно рекомендуется очистить временные файлы, файлы cookie и историю из целевой резервной копии, если это применимо. Это особенно полезно, если вы выполняете резервное копирование нескольких полных профилей пользователей и периодически их перезаписываете. Поскольку временные файлы и файлы cookie меняются, ваши резервные копии каталогов будут увеличиваться за счет ненужных файлов. Чтобы исправить это, следующий код можно добавить в сценарий резервного копирования или в отдельный командный файл. Он будет автоматически искать во всех подкаталогах файлы cookie, temp и history, а затем удалять эти каталоги:

:: сначала перейти на целевой диск
G:
:: ваш родительский резервный каталог
drive = G : \ Backup

echo ### Поиск файлов для очистки. ..
cd% drive%
dir / s / b / ad \ cookies>% drive% \ cleanup.txt
dir / s / b / ad \ temp>% drive% \ cleanup.txt
dir / s / b / ad \ history>% drive% \ cleanup.txt

echo ### Удаление файлов cookie, временных файлов и истории из каталога резервных копий
для / f «delims =» %% J in (% drive% \ cleanup.txt) do rd «%% J» / Q / S

echo Очистка завершена
@pause

Обратите внимание, что перед поиском файлов для удаления необходимо перейти на целевой диск и в основной каталог резервной копии.Все подпапки, содержащие «куки», «временную» или «историю», будут удалены автоматически. Вы можете проверить, что будет удалено, закомментировав строку «for / f …..» (просто добавьте :: в начало строки или удалите его из командного файла и добавьте его позже). Если эта строка отсутствует, в файле будут перечислены только все файлы, подлежащие удалению, в файле cleaup.txt, расположенном в целевом каталоге (G: \ Backup \ cleanup.txt в приведенном выше примере). Если вы добавите часть очистки в конец пакетного файла резервного копирования, вы можете удалить строку «@pause» в конце части резервного копирования, чтобы все могло выполняться без вмешательства пользователя.

В качестве альтернативы существует более простой однострочный метод удаления определенных подкаталогов после резервного копирования. Недостатком использования этого метода является то, что вам понадобится отдельная строка для каждого отдельного каталога, который нужно удалить … Другими словами, он не работает при удалении большого количества каталогов с похожими именами. Тем не менее, вот пример:

rmdir / s / q «% drive% \% UserName% \ Local Settings \ Temporary Internet Files»

См. Также: Как выполнить резервное копирование с помощью пакетных файлов в Windows 10 (с использованием Robocopy )

Примечания:

    При необходимости любой командный файл можно прервать с помощью CTRL + C или CTRL + Break.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *