Копирование файлов с переименованием cmd
Добрый день! Хочу создать батник, который бы переименовывал файлы в папке и копировал их в итоговую "Total"
Есть две папки, "1" и "2" и в обеих лежат файлы c именами:
check1,check2,check3. и т.д
Нужно чтобы нумерация начиналась с 001 и к имени добавлялся номер папки.
например check001_1, check002_1, check003_1 - это для папки "1" и например check001_2, check002_2, check003_2 - для папки "2"
файлов может быть более тысячи
Для меня это нереально(
Пробовал только переименовывать вот таким кодом
for /f "tokens=*" %%a in ('dir /b C:\Onkassa\Rename\1\*.*') do ren C:\Onkassa\Rename\1\%%a 001_1%%a
в итоге переименован только первый файл 001_1check
Если долго сидеть на берегу реки, можно дождаться, как мимо тебя проплывёт труп врага. Правда, твоей жизни может на это и не хватить
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Вам надо сохранять исходную нумерацию или можно перенумеровать все файлы по возрастанию времени создания ? » |
По возрастанию времени создания не получится я полагаю, всем файлам проставляется одинаковое время - время распаковки архива.
Постараюсь описать подробно:
Файлы чеков я забираю из архива, в котором они пронумерованы условно от check1 до check100. Я кладу архив в папку "1" и распаковываю.
Если в папке распаковать более одного архива, тогда при совпадении имен к имени файлов второго архива добавляется суффикс "_1" например check1_1
Если ещё архив, соответственно будет имя check1_2 и т.д, имя файла корректируется в зависимости от кол-ва архивов. Все это самостоятельно делает 7-Z архиватор.
Поэтому прошу прощения) ввел в заблуждение, суффикса "копия" не будет.
Именно в этом и сложность, как их пронумеровать по порядку.
Iska, Цитата когда-то популярная песня: закрывала уши я, я её не слушала, ой, мама, моя мамочка, как ты была права! » |
Откровенно говоря это трындец)), даже просто логику переименования представить не могу, не говоря уже о синтаксисе и написания батника. (
Кстати, это немного не о том. смысл сих фраз не надо понимать буквально.
Если сказать их по-русски, то получится: всему свое время, но не упусти момент. т.е. это об умении выжидать наиболее подходящий момент для чего-либо.
И он ещё пока, судя по всему, не наступил.
даже просто логику переименования представить не могу » |
если не получается представить логику.
Как уже говорил выше, опишите все возможные варианты входящих данных и то, что из них требуется получить в итоге.
Содержимое файлов имеет отношение к нумерации и вообще нумерация имеет какое-либо значение? Т.е. если просто взять и откинуть все существующие цифры в конце имени файла и перенумеровать их заново - устроит такое решение?
А ещё можно перенумеровать их по дате изменения файла, которая сохраняется даже после извлечения из архива.
В общем, соберитесь с духом и попробуйте таки сформулировать саму задачу (о батниках и синтаксисе голову не ломайте, это только запутает).
-------
scio me nihil scire. Ѫ
Не прошло и полугода пяти страниц темы, как мы добрались таки до того, с чего следовало начинать — до постановки задачи, а не попыток как-нибудь выбить реализацию уже выбранного решения. Браво!
при совпадении имен к имени файлов второго архива добавляется суффикс "_1" например check1_1 Если ещё архив, соответственно будет имя check1_2 и т.д, имя файла корректируется в зависимости от кол-ва архивов. Все это самостоятельно делает 7-Z архиватор . » |
?!» Не делает он ничего такого «самостоятельно». Пока Вы не нажмёте в диалоге подтверждения кнопку «Переименовать автоматически» — не делает.
YuS_2,
Ну что же, поехали.
Есть некое кол-во архивов с файлами, которые в каждом архиве пронумерованы от check1 до условно check100.
Есть папка 1 и 2 , куда архивы и кладутся. Файлов в папка должно быть менее 1000, тоесть 999
Также есть папка Total
Содержимое файлов никакого отношения к нумерации не имеет.
Нужно:
1)Распаковать архив(ы) в папках 1 и 2, после чего файл архива удалить.
2)Переименовать файлы с именами от check001 до check999 при этом добавить к имени значение названия папки 1 или 2 :
А именно от check001_1 до check999_1 и соответственно check001_2 до check999_2
3)Скопировать переименованные файлы в папку "Total"
А ещё можно перенумеровать их по дате изменения файла, которая сохраняется даже после извлечения из архива. » |
Пробовал распаковывать, время для всех файлов ставится одинаковое. Если получится сделать так, то это будет самое верное решение.
Доброго времени суток.
Убедительная просьба, помогите пожалуйста решить задачу.
Существует исходный путь (SrcDir), который идет до определенного каталога. В этом каталоге есть определенная структура (всегда разная) может быть разная, но "скелет" структуры всегда один. Если точнее - исходный путь содержит структуру папок с файлами для обновления в других местах (DstDir), но она может быть различной в зависимости от количества и целевой задачи обновляемых файлов.
В свою очередь, папка назначения (DstDir) так же имеет "скелет", схожий с SrcDir, но по факту, всегда полный. То есть, грубо говоря, в DstDir есть папки, подпаки, файлы всегда. А в SrcDir папки, подпаки с файлами могут составлять только часть DstDir.
Необходимо скопировать все папки, подпапки с файлами из SrcDir в DstDir, но в случае совпадения файлов, нужно, чтобы исходный файл в DstDir переименовался, к примеру, с постфиксом текущей даты и времени (просто добавить в имени файла).
Мой последний (но не доведенный до ума) вариант:
Получить текстовые файлы с перечнем файлов "Исходника" и "Назначения"
Вывод в цикле добавил, чтобы хотя бы проверить работоспособность поиска совпадаемых файлов. Однако ничего не получилось.
Все эти куски кода подразумевали то, что получится переименовать потенциально заменяемые файлы в DstDir, а потом с помощью
произвести копирование. Я понимаю, что если файлы уже переименовать, то в ключе /-Y может не быть необходимости, просто на всякий случай добавил.
Но у меня никак не получается все довести до ума. Я пробовал использовать вложенный цикл с
, который в первой итерации получал файл в SrcDir, а потом проверял этот файл на наличие в DstDir, но всего, чего я добился - это частое повторение значений совпадаемых файлов, причем опять же работало это некорректно, насколько помню, он просто выводил список в DstDir.
Возможно есть более простой способ реализации, либо этот можно как-то допилить.
Спасибо за любую помощь.
Копирование файлов с переименованием в случае совпадения имён перемещаемых и имеющихся в папке назначения файлов
Добрый день. Помогите создать bat файл. Смысл в чем есть папка загрузки на компьютере с нее файлы и.
Копирование с переименованием и заменой файлов в каталоге назначения
Господа, добрый день. Прошу помочь в решении задачки, что то не получается её победить :(.
Необходимо скопировать все папки, подпапки с файлами из SrcDir в DstDir, но в случае совпадения файлов, нужно, чтобы исходный файл в DstDir переименовался, к примеру, с постфиксом текущей даты и времени (просто добавить в имени файла).
Из всей выше каши - это одна умная строка.
Теперь далее.
Задача, вероятно, не разовая (иначе даже при сотни тысяч уже ручками сделать было можно) и отсюда вопрос и не один:
"Что" занимается копированием, по какой "чьей" команде, это по времени происходит или .
. нужно, чтобы исходный файл в DstDir. - какой файл, как зовут.
Приведите нормальный пример:
Вот примерный список этой папки (или скрин), вот - этой, надо при входе в систему или при выходе из браузера чтобы произошло сравнение этих двух кадалогов и новый файл по времени создания или изменения или имени или размеру по-отношению к файлам одного каталога или всем файлам каталогов куда-то скопировать.
Не знаю, что насчет каши, я просто старался максимально подробно все описать (по-моему все вполне ясно, только без примеров). Вот с примерами:
SrcDir имеет следующую структуру (она же в тексте темы названа "скелет") - файлик SrcDir.jpg. В этих каталогах есть файлы, но в разное время они всегда будут разные. То есть конкретно сейчас в папке RDF есть два файла:
ACC_LIST.rdf
ACCLISTG.rdf
DstDir имеет схожую структуру, как и SrcDir, только путь до нее другой (файлик DstDir.jpg). Конкретно в папке RDF есть 4 файла:
ACC_LIST.rdf
ACCLISTG.rdf
OSTR_A.rdf
umc_a_bu.rdf
Нужно скопировать файлы из SrcDir в DstDir, но при копировании будут два одинаковых файлика (ACC_LIST.rdf, ACCLISTG.rdf). Нужно, чтобы в DstDir уже существующие переименовались с постфиксом даты и времени, после этого скопировались из SrcDir.
Задача, вероятно, не разовая (иначе даже при сотни тысяч уже ручками сделать было можно) и отсюда вопрос и не один:
"Что" занимается копированием, по какой "чьей" команде, это по времени происходит или .
. нужно, чтобы исходный файл в DstDir. - какой файл, как зовут.
Задача не разовая, выполняется с целью обновления этих файлов на более новые, но старые нужно сохранять для того, чтобы можно было вернуть их в качестве рабочих. Содержимое SrcDir всегда разное, поэтому и нужно, чтобы искались все вложенные файлы.
DstDir так же будет меняться, то есть в примере с вложенного изображения путь (D:\DESTINATION\vb6) может меняться на (E:\DATA_FILES\DESTINATION\vb6) или вообще на какой-либо путь к сетевому ресурсу.
"Что" по "чьей" команде выполняется - не до конца понял, в чем вопрос, мне нужно .bat файлик, который будет все это выполнять на конкретный момент запуска этого .bat файла, без всяких входов в систему, закрытия браузера и т.д.
Добавлено через 9 минут
Этот с перекопированием:
Я извиняюсь, что так поздно ответил. Что-то совсем забыл отписаться.
alpap помог очень хорошо, большое спасибо.
Конкретно для моей задачи еще небольшое изменение кода:
Да, я таким образом тоже проверял, все нормально выходило. Но стоит %time:~0,8% засунуть в цикл - все время валится ошибка о том, что переименовываемый файл занят другим процессом (я уже проверял, ничем он не занят, а переименование БЕЗ цикла проходит без проблем).
С этим согласен, я сейчас как раз привожу к более красивому внешнему виду (ну как могу, я в cmd особо не работал никогда). Спасибо за этот вариант. Я заодно и сам цикл по копированию и переименованию вынес для call.
Есть еще один небольшой вопрос, который возник:
У меня почему-то в результате выполнения кода выше не происходит завершение программы. Мне необходимо, чтобы в случае, если в choice пользователь выбрал "n" - происходил выход (именно закрытие самого пакетного файла). А у меня почему-то все равно выполняется остаток кода. Почему такое может происходить?
можно еще на метку выхода goto eof переходить, но в данном случае не имеет значения.
Добавлено через 6 минут
Пауза для наглядности стоит, в рабочем коде (где она не требуется специально) не нужна.
Добавлено через 3 минуты
titaniche,
Да, а в цикле %time:~0,8% и не будет работать, это как менять новоназначенную переменную, надо вначале
Setlocal EnableDelayedExpansion
а переменную записать так !time:~0,8!
или через call выкидывать в пп, тогда ничего менять не надо.
Добавлено через 8 минут
Еще можете посмотреть как организовыватся сложное (в смысле более 1го уровня) меню.
Спасибо за консультацию по поводу меню. Я, так то, думал про конструкцию вида set /p m="", но хотел использовать choice, потому как вроде бы короче, компактнее.
Я уже не понимаю, откуда у меня какие-то невероятные вещи случаются. О_о
Вот еще одна проблема:
Переменные rnf и cpf я использовал в качестве счетчиков. Но я совершенно не понимаю, почему rnf изменяется корректно, а cpf не меняется вообще? В итоге на экране у меня выходит верное значение rnf и совершенно пустое cpf. Даже 0 не выходит, просто нет ничего. Такое ощущение, что set /a cpf+=1 не работает совсем (вернее это не ощущение, а действительно не работает. Пытался добавить в блок else вывод cpf, чтобы увидеть значение на каждой итерации цикла (разумеется, когда условие выполняется) - выходят нули).
Уже не представляю, просто, в чем дело. Пробовал разные конструкции, хоть set/a cpf=!cpf!+1 - бесполезно. rnf отрабатывает корректно, а cpf нет.
titaniche,
Вы не прикалываетесь сейчас?
Если есть файлы мы их копируем и считаем и видим кол-во
Если нет файлов мы их считаем, но не видим кол-во или даже и не считаем по условию
это мои мысли, но точно понимать задачу можно по полному коду, диплома телепата у меня пока нет, но есть чувство, что скоро будет
Добавлено через 4 минуты
Вы хоть смотрите что я делаю и как, опять куча . зачем в такой [set strdir=!strdir:~-4!], откровенно дурацкий способ подменять путь, такая путаница, посмотрите как четко и понятно у меня, захочешь не ошибешься.
Добрый день. Помогите создать bat файл. Смысл в чем есть папка загрузки на компьютере с нее файлы и папки содержащиеся в ней должны копироваться в определенную папку на жестком диске. Файлы и папки в папке загрузки с определенной переодичностью удаляются другим батником. И после в папке загрузки могут появляться файлы с тем же именем что и файлы перемещенные в указанную папку. Требуется что бы при копировании новых файлов из папки загрузки в случае совпадения имён копируемых и имеющихся в папке назначения файлов к старым файлам находящимся в папке для копирования добавлялся префик (например дата создания файла) в названии, а новые файлы просто копировались из папки загрузки.
Спасибо за любую помощь.
Копирование с переименованием и заменой файлов в каталоге назначения
Господа, добрый день. Прошу помочь в решении задачки, что то не получается её победить :(.
а если два или более в эту дату - не пойдет, добавляем единичку (и +1) в конце имени, при его совпадении
Работает но копируются только файлы находящиеся в этой папке
Дата в имя файла не вставляется добавляется цифра +1 в названии файла (как добавить пробел)
В этой статье
Копирование файлов с переименованием в случае совпадения имён копируемых и имеющихся в папке назначения файлов
Код который используется самым последним в названии добавлялась file и текущая дата и время
Можешь подскакать как сделать так что бы он копировал и папки и файлы файлы находящиеся внутри них по той же схеме что и файлы в основной папке?
это уже второй запуск - два файла соответственно при этом коде,
при первом коде в той же папке был бы при первом запуске 1111, в другой папке только со второго запуска будет 1111, так как предполагается что проверяемый 111 уже есть
Добавлено через 9 минут
А как настроить что бы новая цифра была через пробел и окружена скобками
Добавлено через 1 минуту
Я все внимательно несколько раз прочитал я просто не разбираюсь в якыке этого кода
Добавлено через 2 минуты
Меня впринципе все устраивает в том коде на которую я дал ссылку, там не работает ли то что не учитываются внутринние каталоги в этой папке и файлы который в них находятся
Спасобо тепеть файлы которые уже есть с цифрой в скобках. А как сделать что бы копировались папки и файлы в них. На рисунке 1 папки присутствуют, а га рисунке 2 куда происходит копирование папок нет.
но в %%a уже будет полный путь и надо будет откорректировать "%d_in%\%~1"
Добавлено через 1 минуту
это xcopy /? или robocopy /?
Добавлено через 1 минуту
да и вообще это другая задача уже - как всегда хромает постановка задачи
а еще как всегда - неправильный подход к выполнению задачи.
Подскажи а будет учитываться только папка находящаяся в это папке, или паппка в папке в папке. И файлы в этих папках будут копироваться по тойже схеме ч и в основном каталоге?
Добавлено через 8 минут
Смотри у меня есть папка загрузки и в ней находятся файлы и папки с файлами. Файлы из папки загрузки удаляются каждый понедельник. Но мне требуется чтобы эти файлы хранились в отдельной папке на другом диске. (С этим мы разобрались файлы из папки загрузки копируются). Но как я писал в самом начале файлы загруженные в папку загрузки могут иметь одинаковое название с теми что уже скопированы. (С этим мы тоже разобрались). Теперь остасоль разобраться с тем чтобы копировались не только файлы, но и папки которые есть в папке загрузки, а в этих папка тоже есть файлы. Папки должны просто копироваться без присвоения им +1 в названии, а файлы которые в них солердатся должны следовать томуже правилу что и в основной папке.
Добавлено через 1 минуту
Давай я завтра на фотография все объясню. Просто сейчас надо идти и нет возможности показать. Хорошо?
а уж потом занимался совпадениями. Что там вообще потом можно будет найти: файл (1), . файл (1001), какой нужен кто помнит, все перепробовать?
alpap, Добрый день. Давая я заново обресую ситуацию, постарался изложить в подробностях:
Сейчас у меня есть две папки с их уровнем вложений (эти папки сейчас используются для примера): (рис. 1)
C:\Users\Toshiba\Desktop\5 (в будущем это будет папка загрузки) (у папки C:\Users\Toshiba\Desktop\5 есть еще под папки с неизвестный уровнем вложений сейчас их 2 но, в будущем может получиться так C:\Users\Toshiba\Desktop\5\Новая папка\Еще папка\Еще папка\Новая папка\ и так далее уровень конечного вложения сейчас неизвестен) (рис. 2)
C:\Users\Toshiba\Desktop\6 (это папка куда сейчас копируются файлы из папки C:\Users\Toshiba\Desktop\5, в будущем она тоже изменится)
Что мне требуется сейчас: (знаком +++ я отмечу то что уже реализовано)
+++1) Чтобы файлы из папки C:\Users\Toshiba\Desktop\5 копировались в папку C:\Users\Toshiba\Desktop\6, этим скриптом файлы копируются.
+++2) Файлы из папки C:\Users\Toshiba\Desktop\5 удаляются каждую пятницу. (это получилось реализовать самому с помощью другого bat файла, удаляются через планировщик заданий Windows)
+++3) При первичном копировании файлы из папки C:\Users\Toshiba\Desktop\5 копируются с оригинальным названием в папку C:\Users\Toshiba\Desktop\6, (или вторичное использование скрипта или первичное копирование файлов из папки C:\Users\Toshiba\Desktop\5, но они уже присутствую в папке C:\Users\Toshiba\Desktop\6) но если в папке C:\Users\Toshiba\Desktop\6 уже присутствует файл с таким названием, то к ним добавляется префик, а файлы из папки C:\Users\Toshiba\Desktop\5 снова копируются с оригинальным названием. (рис. 3 - первое использование скрипта когда папка была пуста, рис 4 - второе использование скрипта когда в ней эти файлы уже находились)
+++4) Пример - оригинальное название 1.txt при вторичном копировании с использованием скрипта с кодом
файл в папке C:\Users\Toshiba\Desktop\6 переименовывается в 11.txt, а файл из папки C:\Users\Toshiba\Desktop\5 копируется с названием 1.txt (как показано на рис. 4)
5) Если заменить часть кода выше указанного скрипта на:
мне не подходят так как мне не надо распределять файлы по их расширению
////////////////////////////////
Этот код меня тоже не устраивает:
так как он не учитывает то что могут появляться файлы с одинаковым названием (те файлы которые были в папке откуда происходит копирование удалились, а на их место пришли файлы с тем же названием).
Копирует один или несколько файлов из одного расположения в другое.
В консоли восстановления можно также использовать команду Копировать с другими параметрами. дополнительные сведения о консоли восстановления см. в разделе Windows среды восстановления (Windows RE).
Примеры
Чтобы скопировать файл с именем memo.doc для letter.doc на текущем диске и убедиться, что символ конца файла (Ctrl + Z) находится в конце скопированного файла, введите:
Чтобы скопировать файл с именем перебора. Typ из текущего диска и каталога в существующий каталог с именем птиц , расположенный на диске C, введите:
Если каталог птиц не существует, файл Renamed . Typ копируется в файл с именем птиц , расположенный в корневом каталоге на диске C.
Чтобы объединить Mar89. rpt, Apr89. rptи May89. rpt, расположенные в текущем каталоге, и поместить их в файл с именем Report (также в текущем каталоге), введите:
При объединении файлов команда копирования помечает конечный файл текущими датой и временем. Если параметр Destinationне указан, файлы объединяются и сохраняются под именем первого файла в списке.
Чтобы объединить все файлы в отчете, если файл с именем Report уже существует, введите:
Чтобы объединить все файлы в текущем каталоге, имеющие расширение имени файла .txt, в один файл с именем Combined.doc, введите:
Чтобы объединить несколько двоичных файлов в один файл, используйте подстановочные знаки, включите /b. это не доWindows расинтерпретации CTRL + Z как символа конца файла. Например, введите:
При объединении двоичных файлов результирующий файл может оказаться непригодным для использования из-за внутреннего форматирования.
- Сочетание каждого файла с расширением .txt с соответствующим ref-файлом создает файл с тем же именем, но с расширением .doc. Команда Copy объединяет file1.txt с параметром file1. ref в форму file1.doc, а затем команда объединяет file2.txt с file2. ref в форму file2.docи т. д. Например, введите:
Чтобы объединить все файлы с расширением .txt, а затем объединить все файлы с расширением REF в один файл с именем Combined.doc, введите:
В разделе Примеры показан принцип использования этой команды.
Синтаксис
Параметры
Параметр | Описание |
---|---|
/d | Позволяет сохранить копируемые зашифрованные файлы в виде расшифрованных файлов в месте назначения. |
/v | Проверяет, правильно ли записаны новые файлы. |
/n | Использует короткое имя файла (если доступно) при копировании файла с именем длиннее восьми символов или с расширением имени файла длиннее трех символов. |
/y | Подавляет запрос на подтверждение перезаписи существующего целевого файла. |
/-и | Выводит запрос на подтверждение перезаписи существующего целевого файла. |
/z | Копирует сетевые файлы в перезапускаемый режим. |
/a | Указывает текстовый файл ASCII. |
/b | Указывает на двоичный файл. |
Обязательный элемент. Указывает расположение, из которого необходимо скопировать файл или набор файлов. Источник может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания. | |
Обязательный. Указывает расположение, в которое необходимо скопировать файл или набор файлов. Назначение может состоять из буквы диска и двоеточия, имени каталога, имени файла или их сочетания. | |
/? | Отображение справки в командной строке. |
Комментарии
Можно скопировать текстовый файл ASCII, в котором используется символ конца файла (CTRL + Z), чтобы указать конец файла.
Если параметр /a предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам, перечисленным до тех пор, пока не встретится копия. В этом случае /b применяется к файлу, предшествующему /b.
Результат использования параметра/a зависит от его позиции в строке командной строки:-if /a после Source, команда Copy обрабатывает файл как ASCII-файл и копирует данные, предшествующие первому символу конца файла (Ctrl + Z). - Если после параметраDestination указано значение, команда Copy добавляет символ конца файла (Ctrl + Z) в качестве последнего символа файла.
Если /b указывает интерпретатору команд считывать число байтов, указанное размером файла в каталоге. /b — это значение по умолчанию для Copy, если только копирование не объединяет файлы.
Если /b предшествует или следует за списком файлов в командной строке, он применяется ко всем файлам в списке до тех пор , пока не встретится параметр /a. В этом случае /a применяется к файлу, предшествующему /a.
Действие /b зависит от его позиции в командной строке:-if /b следует за источником, команда Copy копирует весь файл, включая любой символ конца файла (Ctrl + Z). -If /b следует за назначением, команда Copy не добавляет символ конца файла (Ctrl + Z).
Если в переменной среды копикмд предустановлен параметр /y , его можно переопределить с помощью /-и в командной строке. По умолчанию при замене этого параметра выводится запрос, если команда Copy не выполняется в пакетном скрипте.
Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (используйте символы-шаблоны или формат файла file1 file2 файл3 ).
Если во время фазы копирования теряется соединение (например, если сервер переходит в автономный режим), можно использовать копию/z , чтобы возобновить подключение после восстановления подключения. Параметр /z также отображает процент завершения операции копирования для каждого файла.
Имя устройства можно заменить одним или несколькими экземплярами источника или назначения.
Если назначением является устройство (например, COM1 или LPT1), параметр /b копирует данные на устройство в двоичном режиме. В двоичном режиме copy/b копирует все символы (включая такие специальные символы, как CTRL + C, CTRL + S, CTRL + Z и ввод) на устройство в виде данных. Однако если параметр /bне указан, данные копируются на устройство в режиме ASCII. В режиме ASCII специальные символы могут привести к объединению файлов во время процесса копирования.
Если в источникеуказано несколько файлов, команда Copy объединяет их в один файл, используя имя файла, указанное в поле назначение. Команда Copy предполагает, что Объединенные файлы являются файлами ASCII, если не используется параметр /b .
Чтобы скопировать файлы длиной 0 байт или скопировать все файлы и подкаталоги каталога, используйте команду xcopy.
Чтобы назначить текущее время и дату файлу без изменения файла, используйте следующий синтаксис:
Где запятые указывают, что конечный параметр был намеренно оставлен.
Параметры
Синтаксис
Комментарии
Использование /z
Если вы потеряли подключение на этапе копирования (например, если сервер переходит в режим «вне сети»), то после повторного подключения Подключение возобновится. /z также отображает процент выполнения операции копирования для каждого файла.
Использование /y в переменной среды копикмд.
В переменной среды КОПИКМД можно использовать параметр /y . Эту команду можно переопределить с помощью /-и в командной строке. По умолчанию выводится запрос на перезапись.
Копирование зашифрованных файлов
Копирование зашифрованных файлов на том, который не поддерживает EFS, приводит к ошибке. Сначала расшифровать файлы или скопировать их на том, который поддерживает EFS.
Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (то есть с помощью подстановочных знаков или формата file1 + file2 + файл3).
Значение по умолчанию для назначения
Если опустить назначение, команда xcopy скопирует файлы в текущий каталог.
Указание того, является ли назначение файлом или каталогом
Нажмите клавишу F, если хотите скопировать файл или файлы в файл. Нажмите клавишу D, если хотите скопировать файл или файлы в каталог.
Использование команды xcopy для установки атрибута архива для целевых файлов
Команда xcopy создает файлы с установленным атрибутом Archive, независимо от того, был ли этот атрибут задан в исходном файле. Дополнительные сведения об атрибутах файлов и attribсм. в разделе Дополнительные ссылки.
Сравнение xcopy и diskcopy
Если у вас есть диск, содержащий файлы в подкаталогах, и вы хотите скопировать его на диск, имеющий другой формат, используйте команду xcopy вместо команды diskcopy. Так как команда diskcopy копирует диски по дорожке, исходный и целевой диски должны иметь одинаковый формат. Команда xcopy не имеет этого требования. Используйте xcopy , если вам не нужна полная копия образа диска.
Коды выхода для команды xcopy
Для обработки кодов завершения, возвращаемых xcopy, используйте параметр ERRORLEVEL в командной строке If в пакетной программе. Пример пакетной программы, обрабатывающей коды завершения с помощью If, см. в разделе Дополнительные ссылки. В следующей таблице перечислены все коды выхода и их описание.
Примеры
1. чтобы скопировать все файлы и подкаталоги (включая все пустые подкаталоги) с диска A на диск B, введите:
2. чтобы включить в предыдущий пример все системные или скрытые файлы, добавьте параметр командной строки/h следующим образом:
3. чтобы обновить файлы в каталоге \репортс с файлами в каталоге \равдата, которые были изменены с 29 декабря 1993 г., введите:
4. чтобы обновить все файлы, существующие в \репортс в предыдущем примере, независимо от даты, введите:
5. чтобы получить список файлов для копирования с помощью предыдущей команды (т. е. без фактического копирования файлов), введите:
Файл xcopy. out содержит список всех копируемых файлов.
6. чтобы скопировать каталог \кустомер и все подкаталоги в каталог \\публик\аддресс на сетевом диске H:, оставьте атрибут "только для чтения" и при создании нового файла в H: введите:
8. можно создать пакетную программу для выполнения операций xcopy и использовать пакет If для обработки кода выхода при возникновении ошибки. Например, в следующей пакетной программе для параметров источника и назначения xcopy используются заменяемые параметры:
Чтобы использовать предыдущую пакетную программу для копирования всех файлов в каталоге К:\пргмкоде и его подкаталогов на диск B, введите:
9. в этом примере копируются все непустые каталоги, а также файлы, имя которых соответствует шаблону, заданному с помощью символа звездочки.
В предыдущем примере это конкретное значение исходного параметра .\ток *. yml копирует те же три файла, даже если их два символа пути . \ были удалены. Однако файлы не копируются, если из исходного параметра был удален подстановочный знак «звездочка», что делает его просто .\ток.ИМЛ.
Читайте также: