Подтвердить что ты не робот

Пакет/бит для копирования папки и содержимого сразу

Я пишу пакет script, который делает копию. Я хочу script его скопировать всю папку. Когда я хочу скопировать один файл, я делаю это

copy %~dp0file.txt file.txt 

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

mainfolder/
  file1.txt
  file2.txt
  insidefolder/
     file3.txt
     file4.txt 
     file5.txt
4b9b3361

Ответ 1

если у вас есть xcopy, вы можете использовать параметр /E, который скопирует каталоги и подкаталоги и файлы внутри них, включая сохранение структуры каталогов для пустых каталогов

xcopy [source] [destination] /E

Ответ 2

Я подозреваю, что команда xcopy - это волшебная пуля, которую вы ищете.

Он может копировать файлы, каталоги и даже целые диски, сохраняя исходную иерархию каталогов. Существует также несколько дополнительных опций по сравнению с основной командой copy.

Ознакомьтесь с документацией здесь.

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

Ответ 3

По старому:

xcopy [source] [destination] /E

xcopy устарел. Robocopy заменяет Xcopy. Он поставляется с Windows 8, 8.1 и 10.

robocopy [source] [destination] /E

robocopy имеет ряд преимуществ:

  • пути копирования более 259 символов
  • многопоточное копирование

Подробнее здесь.

Ответ 4

Для копирования папки Вы можете использовать

robocopy C:\Source D:\Destination /E

Для копирования файлов

copy D:\Sourcefile.txt D:\backup\Destinationfile.txt /Y 

Удалить файл в какой-либо папке, последняя дата изменения более чем на один день

forfiles -p "D:\FolderPath" -s -m *.[Filetype eg-->.txt] -d -[Numberof dates] -c "cmd /c del @PATH"

И вы можете разделить задачу в окнах выполнять эту задачу автоматически в определенное время.

Ответ 5

Меня интересует оригинальный вопрос здесь и связанные с ним.

Для ответа на этой неделе я провел несколько экспериментов с XCOPY.

Чтобы ответить на исходный вопрос, здесь я публикую результаты своих экспериментов.

Я сделал эксперименты на Windows 7 64-разрядной версии Professional SP1 с копией XCOPY, поставляемой с операционной системой.

Для экспериментов я написал код на языке сценариев Open Object Rexx и макрос редактора Kexx с текстовым редактором KEdit.

XCOPY был вызван из кода Rexx. Код Kexx отредактировал экранный результат XCOPY, чтобы сосредоточиться на решающих результатах.

Все эксперименты были связаны с использованием XCOPY для копирования одного каталога с несколькими файлами и подкаталогами.

Эксперименты состояли из 10 случаев. Каждый случай скорректировал аргументы XCOPY и один раз вызвал XCOPY. Все 10 случаев пытались выполнить одну и ту же операцию копирования.

Вот основные результаты:

(1) Из 10 случаев только три делали копирование. Остальные 7 случаев сразу же после обработки аргументов XCOPY дали сообщения об ошибках, например,

Invalid path

Access denied

без копирования файлов.

Из трех случаев, которые делали копирование, все они выполняли одно и то же копирование, то есть дали те же результаты.

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

Одним из следствий является то, что при использовании XCOPY для копирования каталога X и его содержимого, затем МОЖЕТ скопировать содержимое, но НЕ МОЖЕТ скопировать сам каталог X; таким образом, потерять метку даты в каталоге X, ее бит архива, данные о собственности, атрибуты и т.д.

Конечно, если каталог X является подкаталогом каталога Y, XCOPY из Y будет скопировать все содержимое каталога Y WITH с каталогом X. Таким образом, таким образом можно получить копию каталога X. Однако копия каталога X будет иметь его отметка времени-времени времени запуска XCOPY и NOT штампа даты-времени исходного каталога X.

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

x.htm

x_files

могут появляться далеко друг от друга в сортировке по дате.

Иерархические файловые системы возвращаются назад, IIRC в Multics в MIT в 1969 году, и с тех пор многие люди признали два случая, учитывая каталог X, (i) скопируют каталог X и все его содержимое и (ii) копируют все содержимое X, но не сам каталог X. Ну, если только из экспериментов, XCOPY делает только (ii).

Итак, результаты 10 случаев ниже. Для каждого случая в результатах первые три строки имеют первые три аргумента для XCOPY. Таким образом, первая строка имеет имя дерева каталога, который будет скопирован, "источник"; вторая строка имеет имя дерева каталога для получения копий, "место назначения", а в третьей строке есть опции для XCOPY. Остальные 1-2 строки имеют результаты XCOPY.

Один большой момент о параметрах заключается в том, что опции /X и /O приводят к результату

Access denied

Чтобы увидеть это, сравните случай 8 с другими случаями, которые были одинаковыми, не имели /X и /O, но копировали.

Эти эксперименты позволили мне лучше понять XCOPY и дать ответ на исходный вопрос.

======= case 1 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_1\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 2 ==================
"k:\software\dir_time-date\*"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_2\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 3 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_3\"
options = /E /F /G /H /K /O /R /V /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 4 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_4\"
options = /E /F /G /H /K /R /V /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 5 ==================
"k:\software\dir_time-date\"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_5\"
options = /E /F /G /H /K /O /R /S /X /Y
Result:  Invalid path
Result:  0 File(s) copied
======= case 6 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_6\"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 7 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_7"
options = /E /F /G /H /I /K /R /S /Y
Result:  20 File(s) copied
======= case 8 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_8"
options = /E /F /G /H /I /K /O /R /S /X /Y
Result:  Access denied
Result:  0 File(s) copied
======= case 9 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_9"
options = /I /S
Result:  20 File(s) copied
======= case 10 ==================
"k:\software\dir_time-date"
"k:\software\xcopy002_test\xcopy002_test_dirs\output_sub_dir_10"
options = /E /I /S
Result:  20 File(s) copied