Пакетный файл для копирования файлов из одной папки в другую папку - PullRequest
208 голосов
/ 12 июня 2009

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

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

Ответы [ 8 ]

395 голосов
/ 12 июня 2009

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

Просто xcopy /s c:\source d:\target

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

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

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

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

50 голосов
/ 27 марта 2013

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

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

"C:\Some Folder\*.txt"

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

C:\SomeFolder\*.txt
42 голосов
/ 19 августа 2013

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

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

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

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

17 голосов
/ 12 июня 2009

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

13 голосов
/ 09 апреля 2014

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

echo f | xcopy /f /y srcfile destfile

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

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

2 голосов
/ 24 января 2018

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

не забудьте написать анти-слеш в пути, а НЕ косую черту (^^)

пример:

    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

1 голос
/ 22 ноября 2018
@echo off

rem The * at the end of the destination file is to avoid File/Directory Internal Question.

rem You can do this for each especific file. (Make sure you already have permissions to the path)
xcopy /Y "\\Oldeserver\storage\data\MyFile01.txt" "\\New server\storage\data\MyFile01.txt"*
pause

rem You can use "copy" instead of "xcopy "for this example.
0 голосов
/ 12 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...