Пакетный файл для копирования файлов из одной папки в другую папку

У меня есть папка для хранения в сети, в которой все пользователи будут хранить свои активные данные на сервере. Теперь этот сервер будет заменен новым из-за проблем с местом, поэтому мне нужно скопировать файлы подпапок из старой папки хранилища сервера в новую папку хранилища сервера. У меня ниже ex:

из \ Oldeserver \ storage \ data & files в \ New server \ storage \ data & files.


person user73628    schedule 12.06.2009    source источник
comment
Я так понимаю, вы говорите о среде Windows?   -  person Alan Plum    schedule 12.06.2009
comment
@ HugoM.Zuleta, мне известны файлы .bat. Но командный файл не обязательно гарантирует среду Windows. Использование термина предшествует Windows (как и файлы .bat), и я даже видел, как новички использовали этот термин для обозначения сценариев оболочки в средах * nix.   -  person Alan Plum    schedule 28.03.2015
comment
@pluma Я согласен, и это в основном потому, что они относятся к пакетным операциям, выполняемым инструментами создания сценариев их ОС.   -  person Hugo M. Zuleta    schedule 28.03.2015


Ответы (8)


xcopy.exe определенно ваш друг. Он встроен в Windows, поэтому ничего не стоит.

Только 1_

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

  • /s/e - рекурсивное копирование, включая копирование пустых каталогов.
  • /v - добавьте это, чтобы сравнить копию с оригиналом. медленнее, но для параноиков.
  • /h - копировать системные и скрытые файлы.
  • /k - копировать атрибуты только для чтения вместе с файлами. в противном случае все файлы станут доступны для чтения и записи.
  • /x - если вам важны разрешения, вы можете захотеть /o или /x.
  • /y - не запрашивать перед перезаписью существующих файлов.
  • /z - если вы считаете, что копия может выйти из строя, и хотите ее перезапустить, используйте это. Он помещает маркер на каждый файл по мере его копирования, поэтому вы можете повторно запустить команду xcopy, чтобы продолжить с того места, где она остановилась.

Если вы думаете, что xcopy может выйти из строя на полпути (например, при копировании через нестабильное сетевое соединение) или что вам нужно остановить его и продолжить позже, вы можете использовать xcopy /s/z c:\source d:\target.

Надеюсь это поможет.

person lavinio    schedule 12.06.2009
comment
@Iavinio При копировании архива запрашивает файл или каталог. Есть ли способ подавить это? - person Bitterblue; 09.01.2013
comment
Привет @ mini-me - я обнаружил, что если это каталог, вы можете указать завершающий символ '/', и вы не увидите это сообщение. - person DaveDev; 04.02.2013
comment
/i - Если место назначения не существует и копируется более одного файла, предполагается, что это место назначения должно быть каталогом. - person lavinio; 05.03.2013
comment
Как скопировать отдельный файл из каталога? - person Charan Raju C R; 07.01.2014
comment
Чтобы обойти приглашение файла или каталога, выполните команду так ... echo f | xcopy /s /f srcfile destfile - person wintondeshong; 09.04.2014
comment
Как убедиться, что Xcopy не копирует неполный файл. Я имею в виду, что пока другая программа копирует файл (когда он не готов), может ли Xcopy удерживаться до завершения? - person Salindaw; 14.12.2017
comment
@Salindaw получили ли вы ответ на свой вопрос? - person ch.smrutiranjan parida; 10.04.2018
comment
xcopy /s /y c:\source d:\target добавить y для перезаписи без остановки скрипта - person Alper; 27.07.2020
comment
Если вы не хотите, чтобы вас беспокоил вопрос xcopy о копировании файла или каталога, просто добавьте * в конце файла, который будет скопирован по умолчанию как файл (плюс, / y для перезаписи места назначения) xcopy /Y C:\file.txt C:\myfold\file.txt* - person linsock; 30.03.2021

Мой любимый вариант резервного копирования данных:

ROBOCOPY "C:\folder" "C:\new_folder" /mir

/ mir - зеркало. Вы также можете использовать / mov для перемещения файлов. Он воспроизводит ту же самую папку. При необходимости он может удалять / перезаписывать файлы. У меня отлично работает. Это намного быстрее, чем xcopy / copy. Он также встроен в Windows.

Источник: http://technet.microsoft.com/en-us/library/cc733145.aspx

person Etienne Dupuis    schedule 19.08.2013
comment
Я поддерживаю это. Это действительно быстро. намного быстрее, чем xcopy - person Ike; 04.07.2015
comment
Есть ли способ рекурсивно удалить thumbs.db, подобный этому? - person drooh; 03.01.2017
comment
Именно то, что я искал. Копирует все подпапки и файлы точно из источника. - person Rahul; 24.12.2020

Чтобы было ясно, когда вы используете xcopy /s c:\source d:\target, поместите "" вокруг c: \ source и d: \ target, иначе вы получите ошибку.

т.е. если в пути есть пробелы, т.е. если у вас есть:

"C:\Some Folder\*.txt"

но не требуется, если у вас есть:

C:\SomeFolder\*.txt
person Ike    schedule 27.03.2013
comment
Кавычки сделали фокус;) спасибо, я также использовал / Y для замены файла, если он существует :) Пример: ´´´xcopy / s c: \ source d: \ target / Y``` - person Joel Carneiro; 16.12.2018

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

person Joey    schedule 12.06.2009
comment
RoboCopy кажется лучше, чем XCopy, потому что xcopy запрашивает решения о файлах или папках. И я не могу отказаться. Он ДОЛЖЕН работать полностью автоматически. - person Bitterblue; 09.01.2013
comment
@ mini-me Я знаю, что это уже очень поздно, но не могу найти такой же подходящий переключатель. В итоге я прибег к созданию пустого файла с тем же именем, которое я копирую, а затем перезаписал его. Если файл уже существует, он не спрашивает, является ли это файлом или каталогом. (Если вам нужен автоматический каталог, вы можете добавить '/' к пути, и он это сделает). Надеюсь, это поможет будущим людям! - person Tom C; 03.04.2013
comment
@Eve Для справки: echo f | xcopy source destination /y сделает это автоматически. Он присваивает всем вопросам букву f в качестве ответа. Он также будет передавать запросы на перезапись (я думаю, что f принимается как да). - person ndm13; 09.06.2014

Чтобы обойти "укажите имя файла или имя каталога на цели (F = файл, D = каталог)?" подскажите с помощью xcopy, вы можете сделать следующее ...

echo f | xcopy /f /y srcfile destfile

или для тех из нас, кто просто копирует большие подструктуры / папки:

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

person wintondeshong    schedule 09.04.2014
comment
(echo f для файлов или D для каталогов) - person JinSnow; 26.11.2015
comment
пытаюсь сделать это сейчас, и это просто не работает - я всегда получаю подсказки при попытке скопировать один файл в другой каталог. Использование Win 10, если это вообще влияет echo f | xcopy / f / y My.dll C: \ myFolder \ My.dll. Я пробовал это с комбинацией других переключателей, но безрезультатно (и заглавная буква F) - person Prof; 08.04.2016

Если вы хотите скопировать файл, не используя абсолютный путь, относительный путь другими словами:

Не забудьте написать обратную косую черту в пути, а НЕ косую черту.

Пример:

copy children-folder\file.something .\other-children-folder

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

@echo off
echo %%~dp0 is "%~dp0"
echo %%0 is "%0"
echo %%~dpnx0 is "%~dpnx0"
echo %%~f1 is "%~f1"
echo %%~dp0%%~1 is "%~dp0%~1"

Информацию о копировании см. Здесь: https://technet.microsoft.com/en-us/library/bb490886.aspx

А также здесь для документации по пакетным параметрам: https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

person marcdahan    schedule 24.01.2018
comment
Я думаю, что \ называется обратной косой чертой. - person Leon Bohmann; 12.12.2019

Посмотрите на rsync инструмент для Windows NASBackup. Будет бонусом, если вы знакомы с командами rsync.

person nik    schedule 12.06.2009

Вы можете использовать esentutl для копирования (в основном больших) файлов с индикатором выполнения:

esentutl /y "my.file" /d "another.file" /o

индикатор выполнения выглядит так:

введите описание изображения здесь

person npocmaka    schedule 09.11.2020