Faq как скопировать все файлы вместе с подкаталогами


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

Есть ли методы по серьёзнее?

2 ответа 2

Времена однозадачных одно-пользовательских ОС ушли, во всяком случае на PC. Там можно было позволить себе не проверять права на файлы и не бояться. что после проверки на наличие, файла (вдруг!) не окажется при чтении. Но и там были проблемы, которые нужно было решать, например ошибки чтения на аппаратном уровне.

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

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

1. Обязательная обработка исключений.

Файловые операции могут генерировать (и генерируют) массу различных исключений (исключения File.Open ). По хорошему, каждый тип исключений нужно обрабатывать в отдельном блоке catch , почему см. ниже.

2. Копирование папки операция комплексная и долгая

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

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

И это я еще не упомянул возможное отключение носителя нерадивым пользователем во время копирования, битые кластеры, электрика с рубильником, соседа сварщика, погоду на Венере и еще много чего, что так или иначе может спровоцировать исключение.

3. Серебряной пули нет

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

Faq как скопировать все файлы вместе с подкаталогами


Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ !
4. Используйте теги [ code=vba ] . текст программы. [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Команда COPY для копирования одного или нескольких файлов.

Команда COPY при работе в командной строке позволяет копировать один или несколько файлов. Команда имеет синтаксис: COPY[/D][/V][/N][/Y | /-Y][/Z][/L][/A | /B]источник[/A | /B][+ источник[/A | /B] [+ . ]][результат [/A | /B]]. Источником является имя копируемого файла, а результатом является каталог, в который будет помещена копия этого файла и/или имя создаваемого файла.

Для примера, создадим на диске «С» какой-нибудь файл (я создал текстовый файл «robot.txt»), а на диске «D» какую-нибудь папку (я создал папку «folder1»). Тогда команда для копирования файла «robot.txt» в папку «folder1» выглядит так: copy robot.txt d:\folder1

Если необходимо скопировать файл, изменив при этом его имя, необходимо записать следующую команду: copy robot.txt d:\folder1\file.txt В этом случае, файл «robot.txt» будет скопирован в папку «folder1», но уже с именем «file.txt».

Для того чтобы скопировать все файлы с выбранным расширением, необходимо вместо названия файла поставить звездочку «*». Например, создадим на диске «С» какую-нибудь папку (я создал папку «papka») и скопируем в нее все текстовые файлы из папки «folder1», расположенной на диске «D». Команда будет иметь вид: copy d:\folder1\*.txt c:\papka

Если в качестве [результата] не указывать каталог, то команда copy скопирует файл (или файлы) и поместит их в текущем каталоге. При этом скопированные файлы будут иметь то же имя, дату и время создания, что и исходный файл. Например, создадим в папке «folder1», расположенной на диске «D» текстовый файл с именем «robot1.txt». После этого в командной строке изменим текущий каталог с «C:\>» на «C:\Papka». Тогда команда copy d:\folder1\robot1.txt скопирует файл «robot1.txt» из папки «folder1» и поместит его в текущем каталоге, т.е. в папку «papka», расположенную на диске «C». Причем, имя, дата и время создания скопированного файла будет идентично исходному файлу.

Для того чтобы скопировать все файлы из определенного каталога, необходимо вместо названия файла поставить звездочку «*» и вместо расширения файла поставить звездочку «*». Например, создадим в папке «folder1» несколько файлов, имеющих различные расширения (документ Word, архив Rar и т.д.). Тогда команда для копирования всех файлов из папки «folder1» на диск «C» будет выглядеть: copy d:\folder1\*.* c:\

Илон Маск рекомендует:  Книги о HTML

[Источником] или [результатом] копирования могут выступать не только файлы, но и различные устройства компьютера. В Windows поддерживаются следующие имена устройств:

  • LPT1 – LPT3 (параллельные порты).
  • COM1 – COM3 (последовательные порты).
  • CON (терминал, при выводе это экран компьютера, при вводе – клавиатура).
  • PRN (принтер).
  • AUX (устройство, подсоединяемое к последовательному порту 1).

Например, с помощью командной строки и команды «copy» можно создать текстовый файл и записать в него информацию: copy con f1.txt . Команда copy con f1.txt создаст текстовый файл «f1.txt» и скопирует в него символы, которые вы будете вводить с клавиатуры.

После ввода команды copy con f1.txt нажимаем Enter и вводим слова, которые необходимо сохранить (я ввел command com). После ввода необходимо поставить признак конца файла (нажать Ctrl+Z).
C помощью команды copy можно объединять несколько файлов в один файл. Например, создадим на диске «C» два файла f2.txt и f3.txt (файл f1.txt мы создали ранее) и запишем в эти файлы какую-нибудь информацию. Тогда команда copy f1.txt+f2.txt+f3.txt d:\f4.txt скопирует содержимое файлов «f1.txt», «f2.txt», «f3.txt» в файл «f4.txt», который будет автоматически создан на диске «D».

Если при объединении файлов не указывать файл — [результат], то вся информация будет сохранена в первом файле. Например, команда copy f1.txt+f2.txt+f3.txt добавит к содержимому файла f1.txt содержимое файлов f2.txt и f3.txt

Ключ /Y отключает вывод сообщения о замене файлов. По умолчанию, при копировании файлов, если такой файл существует, то на экран выводится сообщение с предупреждением о замене. Пользователь может согласиться с заменой (нажать Y) или не согласиться (нажать N). Ключ /Y отключает это сообщение и копирование происходит сразу. Для примера создадим на диске «C» файл vov.txt и скопируем его на диск «D»: copy vov.txt d:\
Затем скопируем этот файл еще раз. При этом выводится сообщение «Заменить d:\vov.txt [Yes (да)……»
После этого скопируем файл еще раз, употребив ключ /Y. Сообщение выводиться не будет.


Ключ /Y может присутствовать в значении переменной среды окружения COPYCMD. Т.е. по умолчанию, при замене файлов сообщение выводиться не будет. В этом случае, для того чтобы сообщение выводилось необходимо использовать ключ /-Y.

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

Я совсем застрял на эту проблему на некоторое время теперь. Мне нужно скопировать (обновление) все от Folder1 \ каталог directory1 к обновленному \ каталог directory1 перезаписана те же файлы, но не удалять файлы, которые уже существуют на Обновленный \ каталог directory1, но не существуют на Folder1 \ каталог directory1. Для того, чтобы сделать мой вопрос яснее, это мои ожидаемые результаты:

C: \ Folder1 \ directory1

C: \ Обновление \ directory1

C: \ Обновление \ directory1

subtext1.txt (2KB) Directory.Move(source, destination) но у меня возникают проблемы о части назначения , так как некоторые из его папка назначения не существует. Моя единственная идея заключается в том, чтобы использовать , String.Trim чтобы определить , есть ли дополнительные папки , но я не могу использовать его , так как каталоги должны быть динамичными (может быть больше подкаталогов или несколько папок). Я действительно застрял. Можете ли вы порекомендовать какие — то советы или некоторые коды , чтобы получить мой материал движется? Благодаря!

Я получил этот пример из MSDN http://msdn.microsoft.com/en-us/library/cc148994.aspx Я думаю , что это то , что вы ищете

Если вам придется иметь дело с несуществующим путем к папке необходимо создать новую папку

Параллельное быстрое копирование всех файлов из папки в папку с любым уровнем вложенности

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

Многие начинающие пользователи компьютера сталкивается с вопросом: «А как копировать файл или папку?». Копированием называется процесс, при котором создается точная копия данных и отправляется в нужное место (это может другой носитель, или же перемещение внутри компьютера).

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

Как скопировать файл три простых способа

Первый способ: Копирование с помощью мышки.

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


Затем, открываем папку куда необходимо скопировать файл (это может быть другая папка на рабочем столе, или же флешка). Открыв папку (в моем случае я назвал его Урок 2), копируем файл, сделав один клик правой кнопкой (на свободное пространство), и всплывающем окне из списка выбираем вставить. И ваш документ скопирован.

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

Второй способ: Копирование с помощью клавиатуры

Следующий способ проще, чем первый. Копировать файлы можно с помощью клавиатуры.

1. Выделяем нужный файл и нажимаем клавиши Ctrl и С (на английском языке), таким образом ваш файл скопирован.

2. Выбираю папку или другой носитель, куда необходимо скопировать файл. Открываем. И нажимаю клавиши Ctrl и V.

Все ваш файл или папка скопирована со всеми находящимися в ней данными.

Третий способ: Копирование методом перетаскивания

Открываем носитель где находится копируемый файл (в моем случае, это будет флешка), и папку куда планируем скопировать.

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

Наводим курсор мыши на нужный файл, и нажимаю левую кнопку мышки. Не отпуская левую кнопку, перетаскиваю нужный файл в планируемое место для копирования. Должна появится надпись + Копировать в «указывается наименование файла, куда копируется».

Илон Маск рекомендует:  Таблица «безопасных» цветов

Далее, отпускаем кнопку мыши и файл начнет копироваться в указанное вами место.

Как видите нет ничего сложного. Все эти способы достаточно просты. И каждый пользуется тем, вариантом, который считает удобным и быстрым.

Помимо этих способов копирования файла, также существует специальные программы, такие как CopyFolder, CopyMastro, Extention Copy и т.д., которые ускорят процесс копирования.

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


У меня Windows XP. Есть много директорий. В этих директориях много поддиректорий, где лежат файлы.

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

Может есть софтина какая или через xcopy как-то можно, указав родительскую директорию скопировать все файлы (без директорий) оттуда?

Команда COPY для копирования одного или нескольких файлов.

Команда COPY при работе в командной строке позволяет копировать один или несколько файлов. Команда имеет синтаксис: COPY[/D][/V][/N][/Y | /-Y][/Z][/L][/A | /B]источник[/A | /B][+ источник[/A | /B] [+ . ]][результат [/A | /B]]. Источником является имя копируемого файла, а результатом является каталог, в который будет помещена копия этого файла и/или имя создаваемого файла.

Для примера, создадим на диске «С» какой-нибудь файл (я создал текстовый файл «robot.txt»), а на диске «D» какую-нибудь папку (я создал папку «folder1»). Тогда команда для копирования файла «robot.txt» в папку «folder1» выглядит так: copy robot.txt d:\folder1

Если необходимо скопировать файл, изменив при этом его имя, необходимо записать следующую команду: copy robot.txt d:\folder1\file.txt В этом случае, файл «robot.txt» будет скопирован в папку «folder1», но уже с именем «file.txt».

Для того чтобы скопировать все файлы с выбранным расширением, необходимо вместо названия файла поставить звездочку «*». Например, создадим на диске «С» какую-нибудь папку (я создал папку «papka») и скопируем в нее все текстовые файлы из папки «folder1», расположенной на диске «D». Команда будет иметь вид: copy d:\folder1\*.txt c:\papka

Если в качестве [результата] не указывать каталог, то команда copy скопирует файл (или файлы) и поместит их в текущем каталоге. При этом скопированные файлы будут иметь то же имя, дату и время создания, что и исходный файл. Например, создадим в папке «folder1», расположенной на диске «D» текстовый файл с именем «robot1.txt». После этого в командной строке изменим текущий каталог с «C:\>» на «C:\Papka». Тогда команда copy d:\folder1\robot1.txt скопирует файл «robot1.txt» из папки «folder1» и поместит его в текущем каталоге, т.е. в папку «papka», расположенную на диске «C». Причем, имя, дата и время создания скопированного файла будет идентично исходному файлу.

Для того чтобы скопировать все файлы из определенного каталога, необходимо вместо названия файла поставить звездочку «*» и вместо расширения файла поставить звездочку «*». Например, создадим в папке «folder1» несколько файлов, имеющих различные расширения (документ Word, архив Rar и т.д.). Тогда команда для копирования всех файлов из папки «folder1» на диск «C» будет выглядеть: copy d:\folder1\*.* c:\

[Источником] или [результатом] копирования могут выступать не только файлы, но и различные устройства компьютера. В Windows поддерживаются следующие имена устройств:

  • LPT1 – LPT3 (параллельные порты).
  • COM1 – COM3 (последовательные порты).
  • CON (терминал, при выводе это экран компьютера, при вводе – клавиатура).
  • PRN (принтер).
  • AUX (устройство, подсоединяемое к последовательному порту 1).

Например, с помощью командной строки и команды «copy» можно создать текстовый файл и записать в него информацию: copy con f1.txt . Команда copy con f1.txt создаст текстовый файл «f1.txt» и скопирует в него символы, которые вы будете вводить с клавиатуры.

После ввода команды copy con f1.txt нажимаем Enter и вводим слова, которые необходимо сохранить (я ввел command com). После ввода необходимо поставить признак конца файла (нажать Ctrl+Z).
C помощью команды copy можно объединять несколько файлов в один файл. Например, создадим на диске «C» два файла f2.txt и f3.txt (файл f1.txt мы создали ранее) и запишем в эти файлы какую-нибудь информацию. Тогда команда copy f1.txt+f2.txt+f3.txt d:\f4.txt скопирует содержимое файлов «f1.txt», «f2.txt», «f3.txt» в файл «f4.txt», который будет автоматически создан на диске «D».

Если при объединении файлов не указывать файл — [результат], то вся информация будет сохранена в первом файле. Например, команда copy f1.txt+f2.txt+f3.txt добавит к содержимому файла f1.txt содержимое файлов f2.txt и f3.txt


Ключ /Y отключает вывод сообщения о замене файлов. По умолчанию, при копировании файлов, если такой файл существует, то на экран выводится сообщение с предупреждением о замене. Пользователь может согласиться с заменой (нажать Y) или не согласиться (нажать N). Ключ /Y отключает это сообщение и копирование происходит сразу. Для примера создадим на диске «C» файл vov.txt и скопируем его на диск «D»: copy vov.txt d:\
Затем скопируем этот файл еще раз. При этом выводится сообщение «Заменить d:\vov.txt [Yes (да)……»
После этого скопируем файл еще раз, употребив ключ /Y. Сообщение выводиться не будет.

Ключ /Y может присутствовать в значении переменной среды окружения COPYCMD. Т.е. по умолчанию, при замене файлов сообщение выводиться не будет. В этом случае, для того чтобы сообщение выводилось необходимо использовать ключ /-Y.

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

Я совсем застрял на эту проблему на некоторое время теперь. Мне нужно скопировать (обновление) все от Folder1 \ каталог directory1 к обновленному \ каталог directory1 перезаписана те же файлы, но не удалять файлы, которые уже существуют на Обновленный \ каталог directory1, но не существуют на Folder1 \ каталог directory1. Для того, чтобы сделать мой вопрос яснее, это мои ожидаемые результаты:

C: \ Folder1 \ directory1

C: \ Обновление \ directory1

C: \ Обновление \ directory1

subtext1.txt (2KB) Directory.Move(source, destination) но у меня возникают проблемы о части назначения , так как некоторые из его папка назначения не существует. Моя единственная идея заключается в том, чтобы использовать , String.Trim чтобы определить , есть ли дополнительные папки , но я не могу использовать его , так как каталоги должны быть динамичными (может быть больше подкаталогов или несколько папок). Я действительно застрял. Можете ли вы порекомендовать какие — то советы или некоторые коды , чтобы получить мой материал движется? Благодаря!

Я получил этот пример из MSDN http://msdn.microsoft.com/en-us/library/cc148994.aspx Я думаю , что это то , что вы ищете

Илон Маск рекомендует:  Свойства и методы объекта textrange

Если вам придется иметь дело с несуществующим путем к папке необходимо создать новую папку

Параллельное быстрое копирование всех файлов из папки в папку с любым уровнем вложенности

Описание команды XCOPY

XCOPY копирует файлы и каталоги, включая подкаталоги в командной строке Windows. Это мощная команда для копирования файлов и папок, имеет больше параметров чем простая команда COPY.

Параметры утилиты XCOPY

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

Примеры команды XCOPY

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

xcopy D: E: /s /e

  • Описание команды MOVE Команда MOVE служит для перемещения одного или нескольких файлов из одного.

«>MOVE — команда для перемещения файлов — 05/07/2010 08:49
Описание команды RD Команда RD (RMDIR) удаляет каталог/папку через командную строку. А для.

«>RD — команда для удаления каталогов — 05/07/2010 08:45
Описание команды DEL Команда del удаляет заданные файлы через командную строку. А для удаления.

  • Предназначение команды COPY Команда COPY используется для копирования одного или нескольких.

«>COPY копирование файлов — 05/07/2010 08:31
Описание команды FINDSTR Команда finstr осуществляет поиск образцов текста в файлах с.

«>FINDSTR — команда поиска по образцу — 05/07/2010 08:27
Описание команды FIND Команда find осуществляет поиск заданной строки текста в файле или.

Как скопировать весь каталог, кроме одного файла в каждом подкаталоге через терминал? [Дубликат]

У меня есть папка с именем «Java», которая имеет 20 подпапок («День-01» — «День-20»). Каждая подпапка имеет один или два файла .wav вместе с несколькими другими файлами. Я хочу скопировать весь каталог, кроме файлов .wav, через терминал. Как это сделать?

2 ответа

Самый простой способ — использовать rsync с опцией —exclude , чтобы исключить из копирования .wav файлов:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL