Копирование файлов bat: Как написать свой bat файл для создания резервной копии
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 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.
[Batch/CMD] Копирование файлов с контролем сбоев
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
-
Автор темы
nikola24 -
Дата начала
-
Теги bat
-
nikola24
Новый пользователь
#1
@AssistGPT Есть две папки на компьютере1 и2. Есть bat-фал, который периодически копирует файлы и папки из папки 1 в папку2, а потом стирает все файлы и папки в папки 1. Как модифицировать bat файл, чтобы он стирал файлы и папки в папке 1, только если копирование в папку 2 было успешным. А если что-то помешало (не было доступа, какой-то сбой и т.д) файлы и папки в папке 1 не стирались
Последнее редактирование модератором:
ChatGPT
Языковая модель
#2
nikola24 написал(а):
@AssistGPT Есть две папки на компьютере1 и2.
Есть bat-фал, который периодически копирует файлы и папки из папки 1 в папку2, а потом стирает все файлы и папки в папки 1. Как модифицировать bat файл, чтобы он стирал файлы и папки в папке 1, только если копирование в папку 2 было успешным. А если что-то помешало (не было доступа, какой-то сбой и т.д) файлы и папки в папке 1 не стирались
Нажмите для раскрытия…
Для того, чтобы модифицировать bat-файл, необходимо добавить проверку успешности копирования файлов и папок из папки 1 в папку 2 перед удалением файлов и папок из папки 1.
Вот пример такого bat-файла:
@echo off set source_folder=C:\путь\к\папке1 set destination_folder=C:\путь\к\папке2 robocopy "%source_folder%" "%destination_folder%" /mir /r:0 /w:0 if %errorlevel%==0 ( echo Копирование успешно завершено rd /s /q "%source_folder%" ) else ( echo Копирование не удалось )
В этом примере мы используем утилиту robocopy для копирования файлов и папок из папки 1 в папку 2. Флаг /mir указывает на то, что нужно скопировать все файлы и папки и удалить те, которых нет в папке 1. Флаги /r:0 и /w:0 указывают на то, что не нужно повторять попытки копирования в случае ошибок.
После копирования мы проверяем код возврата утилиты robocopy. Если он равен 0, то копирование было успешным и мы удаляем файлы и папки из папки 1 с помощью команды rd. Если код возврата не равен 0, то копирование не удалось и мы не удаляем файлы и папки из папки 1.
Надеюсь, это поможет вам модифицировать ваш bat-файл. Если у вас есть дополнительные вопросы, я буду рад на них ответить.
nikola24
Новый пользователь
#3
ChatGPT написал(а):
Для того, чтобы модифицировать bat-файл, необходимо добавить проверку успешности копирования файлов и папок из папки 1 в папку 2 перед удалением файлов и папок из папки 1.
Вот пример такого bat-файла:
@echo off set source_folder=C:\путь\к\папке1 set destination_folder=C:\путь\к\папке2 robocopy "%source_folder%" "%destination_folder%" /mir /r:0 /w:0 if %errorlevel%==0 ( echo Копирование успешно завершено rd /s /q "%source_folder%" ) else ( echo Копирование не удалось )В этом примере мы используем утилиту robocopy для копирования файлов и папок из папки 1 в папку 2. Флаг /mir указывает на то, что нужно скопировать все файлы и папки и удалить те, которых нет в папке 1. Флаги /r:0 и /w:0 указывают на то, что не нужно повторять попытки копирования в случае ошибок.
После копирования мы проверяем код возврата утилиты robocopy. Если он равен 0, то копирование было успешным и мы удаляем файлы и папки из папки 1 с помощью команды rd. Если код возврата не равен 0, то копирование не удалось и мы не удаляем файлы и папки из папки 1.
Надеюсь, это поможет вам модифицировать ваш bat-файл. Если у вас есть дополнительные вопросы, я буду рад на них ответить.
Нажмите для раскрытия…
Bat файл файлы переносит, но пишет, что попытка не удалась и оставляет файлы в папке 1
ChatGPT
Языковая модель
#4
nikola24 написал(а):
Bat файл файлы переносит, но пишет, что попытка не удалась и оставляет файлы в папке 1
Нажмите для раскрытия…
Если ваш bat-файл переносит файлы, но при этом выводит сообщение об ошибке и не удаляет файлы из папки 1, то, скорее всего, проблема в проверке кода возврата утилиты robocopy.
Проверьте, что в вашем bat-файле после строки с командой robocopy находится следующий код:
if %errorlevel%==0 ( echo Копирование успешно завершено rd /s /q "%source_folder%" ) else ( echo Копирование не удалось )
Этот код проверяет код возврата утилиты robocopy и выполняет удаление файлов из папки 1 только в том случае, если копирование было успешным (код возврата равен 0).
Если код возврата не равен 0, то выводится сообщение об ошибке, но файлы из папки 1 не удаляются.
Если код возврата всегда равен 1, то это может быть связано с тем, что утилита robocopy не может получить доступ к файлам из папки 1. Убедитесь, что у вас есть права на чтение и запись в папке 1 и папке 2.
Если у вас остались какие-то вопросы, пожалуйста, уточните их.
nikola24
Новый пользователь
#5
ChatGPT написал(а):
Если ваш bat-файл переносит файлы, но при этом выводит сообщение об ошибке и не удаляет файлы из папки 1, то, скорее всего, проблема в проверке кода возврата утилиты robocopy.
Проверьте, что в вашем bat-файле после строки с командой robocopy находится следующий код:
if %errorlevel%==0 ( echo Копирование успешно завершено rd /s /q "%source_folder%" ) else ( echo Копирование не удалось )Этот код проверяет код возврата утилиты robocopy и выполняет удаление файлов из папки 1 только в том случае, если копирование было успешным (код возврата равен 0).
Если код возврата не равен 0, то выводится сообщение об ошибке, но файлы из папки 1 не удаляются.
Если код возврата всегда равен 1, то это может быть связано с тем, что утилита robocopy не может получить доступ к файлам из папки 1. Убедитесь, что у вас есть права на чтение и запись в папке 1 и папке 2.
Если у вас остались какие-то вопросы, пожалуйста, уточните их.
Нажмите для раскрытия…
Указанный код в bat-файле есть. Права на чтение и запись в папке 1 и в папке 2 для учетной записи из под которой выполняется операция есть. С чем ещё может быть связана ошибка?
ChatGPT
Языковая модель
#6
nikola24 написал(а):
Указанный код в bat-файле есть.
Права на чтение и запись в папке 1 и в папке 2 для учетной записи из под которой выполняется операция есть. С чем ещё может быть связана ошибка?
Нажмите для раскрытия…
Если права на чтение и запись в папке 1 и папке 2 установлены правильно, то причина ошибки может быть связана с тем, что некоторые файлы или папки в папке 1 заблокированы другими процессами или пользователями.
Для того, чтобы убедиться в этом, попробуйте выполнить следующие действия:
1. Остановите bat-файл и закройте все программы, которые могут использовать файлы в папке 1.
2. Попробуйте вручную скопировать файлы из папки 1 в папку 2 с помощью проводника Windows. Если вам не удастся скопировать какой-то файл, то это будет означать, что он заблокирован другим процессом или пользователем.
3. Если вы обнаружите заблокированный файл, попробуйте закрыть все программы, которые могут использовать этот файл, и повторите попытку копирования.
Если после выполнения этих действий вы все еще не можете скопировать файлы из папки 1 в папку 2, то проблема может быть связана с другими факторами, такими как наличие вирусов, ошибки файловой системы и т. д. В таком случае вам может потребоваться провести дополнительную диагностику и решить проблему.
Поделиться:
Ссылка
Назад
Сверху
Снизу
Копировать файлы — Windows CMD
Копировать файлы — Windows CMD — SS64.com
- SS64
- CMD
- Практическое руководство
Скопируйте один или несколько файлов в другое место.
Синтаксис
COPY [ опции ] [/A|/B] источник [/A|/B] [+ источник2 [/A|/B]...] [ пункт назначения [/A|/B]] КОПИРОВАТЬ источник 1 + источник 2 .. пункт назначения [ опции ] Ключ источник Путь к файлу или файлам, которые необходимо скопировать. / Текстовый файл ASCII будет копироваться до маркера EOF. /B Копия двоичного файла, будут скопированы все расширенные символы. Двоичная копия используется по умолчанию, если не происходит слияние нескольких файлов./D Разрешить создание файла назначения в расшифрованном виде. место назначения Путь к новому файлу(ам). /V Проверить, что файл назначения после записи может быть прочитан. Сравнение с исходными файлами не происходит. /N Если возможно, создавайте в месте назначения только короткие имена файлов (8.3). Этот параметр может помочь при копировании между дисками, форматированными по-разному. например, NTFS и VFAT, или при архивировании данных в ISO9660 компакт-диск. /L Если источник является символической ссылкой, скопируйте ссылку на цель вместо фактического файла, на который указывает исходная ссылка. /Y Отключить запрос подтверждения при перезаписи файлов. /-Y Включить запрос подтверждения при перезаписи файлов. /Z При использовании этой опции, если копирование будет прервано на полпути, оно будет перезапущено, если это возможно. и возобновите копирование оставшейся части файла на следующей копии, если /Z используется снова.
Также отображает «% завершения», который составляет до 100%. /? Показать справку.
Объединение файлов
Чтобы объединить файлы, укажите один файл в качестве места назначения, но несколько файлов
как источник. Чтобы указать более одного файла, используйте подстановочные знаки или перечислите файлы.
со знаком + между каждым (файл1+файл2+файл3).
При копировании нескольких файлов таким способом должен существовать первый файл, иначе
копирование не удастся, обходной путь для этого:
КОПИРОВАТЬ ноль + файл1 + файл2 местонахождение1
Двоичные копии
«COPY /B…» будет копировать файлы в двоичном режиме.
Параметры /A и /B могут появляться в нескольких местах, с разными значениями в зависимости от местоположения.
Перед любым источником — они будут устанавливать режим по умолчанию для всех файлов источника и назначения .
После источника — установят режим для этого источника .![]()
После назначения — установят режим для 9Z (клавиша управления и Z)
Запрос на перезапись файла назначения
Действие по умолчанию — запрос на перезапись, если только команда не выполняется из пакетного сценария.
Чтобы принудительно перезаписать файлы назначения, используйте переменную среды COPYCMD:
.
УСТАНОВИТЬ КОПИРОВАТЬCMD=/Y
Уровни ошибок
Если файл(ы) были успешно скопированы %ERRORLEVEL% = 0
Если файл не найден или заданы неверные параметры = 1
COPY будет принимать пути UNC.
COPY — это внутренняя команда.
Примеры
Скопировать файл в текущую папку
COPY исходный_файл.doc новый файл.doc
Копировать из другой папки/каталога:
COPY «C:\my work\some file.doc» «D:\New docs\newfile.doc»
Укажите только источник, с подстановочным знаком все файлы будут скопированы в текущий каталог:
КОПИРОВАТЬ «C:\моя работа\*. doc»
Укажите источник с помощью подстановочного знака и место назначения в виде одного файла. Обычно это полезно только для файлов с простым текстом.
КОПИРОВАТЬ «C:\my work\*.txt» «D:\New docs\combined.txt»
Создать пустой (нулевой) файл:
КОПИРОВАТЬ NUL EmptyFile.txt
Тихая копия (без обратной связи на экране)
КОПИРОВАТЬ исходный_файл.doc новыйфайл.doc >nul
Скопируйте файл, но не перезаписывайте, если целевой файл уже существует, этот метод работает только для одного файла, без подстановочных знаков:
Эхо 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 — скопировать один или несколько файлов в другое место.
Copyright © 1999-2023 SS64.com
Некоторые права защищены
Создать сценарий для копирования файлов из одной папки в другую на Win10
- Миниинструмент
- Центр новостей MiniTool
- Создать скрипт для копирования файлов из одной папки в другую на Win10
Сара | Подписаться |
Последнее обновление
Пакетный сценарий, также известный как пакетный файл, на самом деле ссылается на список из нескольких команд; всякий раз, когда вы дважды щелкаете файл, команды будут выполняться. Если вы хотите автоматически копировать файлы или папки из одной папки в другую, хорошим выбором будет создание пакетного сценария. Что касается того, как выполнить работу, пожалуйста, продолжайте читать.
Сценарий/пакетный файл Windows
При управлении данными на ПК может потребоваться копирование или перемещение файлов и папок. Разрешения, установленные для файлов и папок, могут быть изменены при их перемещении/копировании с помощью проводника Windows. Ты это знал?
Необходимо перезапустить проводник Windows: проблема решена.
Например, когда вы копируете папку/файл в раздел NTFS или из одного раздела в другой, система Windows будет рассматривать его как новую папку/файл; таким образом, вы станете ВЛАДЕЛЬЦЕМ СОЗДАТЕЛЯ, поскольку система получит разрешения. Вот почему использование скрипта для копирования файлов из одной папки в другую необходимо.
Что такое пакетный файл
Пакетный файл, также известный как пакетный сценарий, на самом деле представляет собой список команд, которые будут выполняться в инструменте командной строки (CMD). Пользователи могут создать пакетный файл, чтобы позволить CMD автоматически копировать и вставлять файлы для них; все, что им нужно сделать, это дважды щелкнуть командный файл/скрипт и подождать.
Можно ли использовать скрипт для копирования файлов из одной папки в другую
Буфер обмена Windows позволяет пользователям легко копировать и вставлять файлы/папки вручную. Обычный процесс копирования кажется довольно простым: выберите файл/папку, которую необходимо скопировать, и выберите вариант копирования; открыть пункт назначения; выберите вариант вставки.
Тем не менее, вы хотите автоматически перемещать файлы из одной папки в другую? Процесс копирования и вставки можно быстро завершить с помощью командной строки Windows.
Как создать пакетный файл для копирования файлов? Как использовать скрипт Windows для копирования файлов? Как правило, он состоит из двух этапов: создание пакетного файла и создание задачи для запуска пакетного файла для копирования файлов из одной папки в другую.
Первый этап: создание пакетного файла для копирования
Вы можете создать пакетный файл для автоматического копирования данных в файле из одного места в другое на вашем компьютере. Следующие шаги завершены в Windows 10.
- Откройте поиск Windows.
- Введите блокнот.
- Откройте приложение «Блокнот».
- Скопируйте и вставьте сценарий в новый файл Блокнота.
- Выберите «Файл» -> «Сохранить как».
- Дайте ему имя.
- Выбрать все файлы.
- Нажмите Сохранить, чтобы завершить создание пакетного файла.
Шаг первый : щелкните значок Cortana на панели задач (исправьте панель задач, не работающую в Window 10).
Шаг второй : введите блокнот в текстовое поле поиска.
Шаг третий : выберите приложение Блокнот из результатов поиска, нажав на него.
Шаг четвертый : введите следующий скрипт или скопируйте и вставьте его в Блокнот.
@echo off
set X=
set «source=C:\<Путь к исходной папке>»
set «destination =D:\<путь к папке назначения>»
robocopy «источник» «назначение» «имя файла с расширением» /z
выход /b
- Исходная папка, конечная папка и количество дней могут быть изменены в соответствии с вашими потребностями.
- Количество дней относится к интервалу времени, в течение которого вы хотите архивировать свои папки.
- «<>» необходимо, если путь к исходной или целевой папке включает пробел.
Нажмите здесь, чтобы узнать больше о robocopy.
Шаг пятый : выберите Файл в строке меню и выберите Сохранить как… из подменю.
Шаг шестой :
- Дайте ему имя и введите в текстовое поле Имя файла ; формат имени файла: <имя файла>.BAT .
- Выберите Все файлы для параметра Сохранить как тип , чтобы изменить тип файла по умолчанию.
- Нажмите кнопку Сохранить внизу, чтобы завершить этот шаг.
Второй этап: создание задачи для запуска пакетного файла
После завершения этого этапа можно использовать пакетный файл для копирования папки в другое место.
Шаг первый : введите планировщик задач в поле поиска Cortana.
Шаг второй : выберите Планировщик заданий из результатов поиска.
Шаг третий : найдите раздел Действия на правой панели.
Шаг четвертый : выберите Создать задачу… из списка.
Шаг пятый : дайте имя задаче и введите его в текстовое поле после Имя .
Шаг шестой : перейдите на вкладку Triggers и нажмите кнопку New… .
Седьмой шаг : определите частоту запуска задачи, выбрав из Один раз , Ежедневно , Еженедельно и Ежемесячно .
Шаг восьмой : установите Время запуска, чтобы решить, когда будет запущена задача, и нажмите кнопку OK для подтверждения.