Не завис а начал копирование. Либо у пользователя нет прав на запись в папку %new_dir% »
в папочке было 3 файла (картина, документ ворд и эксель), доступ в папку есть (фул права). Пока не разобрался в чем дело, мб путь указан не верно, хотя перепроверил все 100 раз.
Пользователи просто будут работать уже на сервере в своей папке. »
set old_dir=»D:\очень важная папка» set new_dir=»\\server\важные папки\%username%» xcopy %old_dir% %new_dir% /s /e /h /y »
Кажется разобрался в чем дело. Дописал в конце кода pause и увидел как во время выполнения он спрашивает это каталог или файл. Поставил ключ /i и все заработало.
Ageron, вам огромное спасибо за помощь. Для меня даже такой код сложный, а для вас как я вижу проще простого)
Сообщения: 2205 Благодарности: 1363
Поставил ключ /i и все заработало. »
——- Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
Это сообщение посчитали полезным следующие участники:
Set «old_dir=Z:\очень важная папка» Set «new_dir=\\Server\Test1\%username% »
хмм, а первые кавычки разве открывать нужно перед old а не когда путь указывается? Set old_dir=»Z:\очень важная папка» Set new_dir=»\\Server\Test1\%username%»
данный код попробую потестировать, но не сегодня
Сообщения: 2205 Благодарности: 1363
——- Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
Последний раз редактировалось megaloman, 01-08-2019 в 15:22 .
Как написать свой bat файл для создания резервной копии
Сегодня мы узнаем про то, что такое bat файл и заодно создадим один из них.
Думаю, что многие, так или иначе, периодически создают резервные копии (так называемые backup -ы) тех или иных файлов и папок.
Вроде все привычно и делать ничего особо сложного не надо: вставить флешку, открыть » Мой компьютер «, найти что надо скопировать, выделить, тыкнуть мышкой, выбрать «скопировать», перебраться в нужный каталог, тыкнуть «вставить» и тд.
Но зачастую все эти клики и лишние телодвижения несколько утомляют и отнимают ценное время, особенно при частых копированиях одних и тех же данных. В этой статье я расскажу как автоматизировать этот процесс посредством консоли, а точнее написания такой штуки как bat файл .
Bat файл — что к чему, вводная
Для начала немного о том, что такое bat файл , зачем он нужен и с чем его (или их) едят. Дабы не изобретать велосипед воспользуюсь выдержкой из Википедии:
Пакетный файл (т.е bat файл, от англ. batch file ) — текстовый файл в MS-DOS, OS/2 или Windows , содержащий последовательность команд, предназначенных для исполнения командным интерпретатором.
После запуска пакетного файла, программа — интерпретатор (как правило COMMAND.COM или CMD.EXE ) читает его строка за строкой и последовательно исполняет команды.
Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, что регулярно приходится совершать пользователю компьютера.
Примерами таких операций могут служить — обработка текстовых файлов; копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.
Пакетные файлы поддерживают операторы if и goto (а в системах семейства Windows NT и расширенный оператор for ), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).
Пакетные файлы в DOS имеют расширение . bat ; для других операционных систем они могут иметь другие расширения — например, . CMD в Windows NT и OS/2 , или .BTM в 4DOS или подобных оболочках.
С теорией разобрались, приступим к, собственно, практике, а именно созданию bat-ника.
Как создать bat файл и использовать его
Давайте подготовим небольшое тестовое поле, чтобы было на базе чего экспериментировать. Откройте мой компьютер и создайте на диске C:\ папочку test . Зайдите в неё и создайте в ней папку testcopy .
Накидайте туда файлов (штук 5-10 ) — фотки, документы и тд и тп (любых короче). Поле для экспериментов готово. Далее нам надо создать, собственно, сам bat файл по нажатию на который у нас будет происходить копирование папки C:\test\testcopy в, скажем, папку C:\test\backup . Создавать вторую папку (которая backup ) не надо — она будет появляться автоматически.
Создать bat очень просто. Жмем правой кнопкой мышки там где хотим его создать (расположение не важно — можно прямо на рабочем столе) и выбираем » Создать » — » Текстовый документ «.
Задаем созданному файлу название и открываем его блокнотом или любым другим текстовым редактором. Т.е. на данный момент мы имеем открытый текстовый файлик, который называется, допустим, копирование.txt .
Добавляем в файл команду, например, для копирования
Далее, собственно, нам в этот файлик нужно ввести команду, которая будет воспроизводиться по средством консоли ( cmd ) при запуске этого файла. В данном случае мы воспользуемся командой xcopy ибо именно она позволяет копировать файлы, каталоги и подкаталоги. Учитывая все пути у нас получится следующая команда:
xcopy C:\test\testcopy C:\test\backup /f /i /y /s
Разъясняю что тут к чему:
xcopy — это сама команда;
C:\test\testcopy — это источник, т.е. папка откуда копируются файлы и каталоги;
C:\test\backup — это результат, т.е. место, куда будут скопированы файлы и каталоги;
/f /i /y /s — дополнительные параметры синтаксиса для команды xcopy (см.синтаксис ниже по тексту).
Количество строчек может быть любым, т.е. если Вам надо скопировать 100 папок, Вы пишете 100 строчек в одном файле и меняете в них только пути.
Далее, касательно синтаксиса (какие дополнительные параметры есть, какие можно дописать и зачем они нужны).
Какие есть (т.е. те, что я указал в данном примере):
/f — выводит имена исходных файлов и файлов-результатов в процессе копирования
/i — создает новый каталог в случае, если тот отсутствует в конечном пути
/y — перезаписывает файл в случае, если он уже есть
/s — копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
Как по мне — это основной список параметров необходимых для «тихого» копирования, т.е. без лишних вопросов о перезаписи, создания каталогов и прочей шушеры. Касательно остального синтаксиса можно почитать, например, тут.
Далее нам надо сменить формат файла с txt на bat . Делается это следующим образом.
Меняем формат файла и пробуем его запустить
Сначала открываем » Мой компьютер «, там переходим » Сервис » — » Свойства папки » — » Вид » и снимаем галочку » Скрывать расширение для зарегистрированных типов файлов «.
Жмем » Применить » и » Ок «. Теперь мы можем менять расширение известных системе файлов, а посему направляемся к нашему файлику, жмем правой кнопкой мышки, выбираем » Переименовать » и методом печатания на клавиатуре меняем расширение с txt на bat (на вопрос системы стоит ли это делать отвечаем утвердительно).
В результате мы имеем следующую картину (в вашем случае файлик называется иначе, но имеет тот же формат):
Собственно, все, что нам остается — это запустить этот файл простым кликом по нему мышки.
Если Вы все сделали правильно, то перед Вами промелькнет консоль и по известному пути появится новая папочка с заданным заранее названием и файлами внутри скопированными из известной Вам папки, т.е картина получится примерно следующая:
Ну или несколько другая, в зависимости от того какие пути и названия папок Вы прописывали в команде. Отредактировать файлик можно сменив ему расширение обратно на .txt и открыв любым текстовым редактором.
Послесловие
Как я уже сказал и Вы сами наверное осознали — использование подобного bat файл ‘а зачастую экономит кучу времени, т.е. один раз написал и периодически запускаешь одним кликом и вместо многоминутных тычков мышкой и ползания по всем папкам получаешь автоматизированный процесс копирования.
При желании можно поставить запуск этого bat -ника в определенные дни через планировщик Windows (или другие программы позволяющие это делать) и вообще забыть о проблеме долгих ручных backup ‘ов.
Если есть какие-то вопросы или проблемы — спрашивайте. Как всегда помогу чем смогу 😉
PS: Если мне не изменяет память, то это кусочек темы из умных админских книжек, а именно из раздела » Автоматизация администрирования «.. так что можете собой гордится 🙂
copying all contents of folder to another folder using batch file?
I have a folder in C:\Folder1
I want to copy all the contents of Folder1 to another location, D:\Folder2
How do I do this using a batch file?
12 Answers 12
xcopy.exe is the solution here. It’s built into Windows.
If you have robocopy,
if you want remove the message that tells if the destination is a file or folder you just add a slash:
xcopy /s c:\Folder1 d:\Folder2\
I see a lot of answers suggesting the use of xcopy. But this is unnecessary. As the question clearly mentions that the author wants THE CONTENT IN THE FOLDER not the folder itself to be copied in this case we can -:
Thats all xcopy can be used for if any subdirectory exists in C:\Folder1
RoboCopy did not work for me, and there are some good solutions here, but none explained the XCopy switches and what they do. Also you need quotes in case your path has spaces in it.
xcopy /i /e «C:\temp\folder 1» «C:\temp\folder 2»
Here is the documentation from Microsoft:
On my PC, xcopy and robocopy need also the path to them, i.e. C:\Windows\System32\xcopy.exe
That’s why I use simply «copy»: copy /y . \Folder1\File.txt . \Folder2\
This is how it is done! Simple, right?
Here’s a solution with robocopy which copies the content of Folder1 into Folder2 going trough all subdirectories and automatically overwriting the files with the same name:
/COPYALL copies all file information /E copies subdirectories including empty directories /IS includes the same files /IT includes modified files with the same name
Note: it can be necessary to run the command as administrator, because of the argument /COPYALL . If you can’t: just get rid of it.
FYI. if you use TortoiseSVN and you want to create a simple batch file to xcopy (or directory mirror) entire repositories into a «safe» location on a periodic basis, then this is the specific code that you might want to use. It copies over the hidden directories/files, maintains read-only attributes, and all subdirectories and best of all, doesn’t prompt for input. Just make sure that you assign folder1 (safe repo) and folder2 (usable repo) correctly.
And, that’s it folks!
Add to your scheduled tasks and never look back.
I have written a .bat file to copy and paste file to a temporary folder and make it zip and transfer into a smb mount point, Hope this would help,