ru:https://highload.today/blogs/avtomatizirovat-kopirovanie-fajlov/ ua:https://highload.today/uk/blogs/avtomatizirovat-kopirovanie-fajlov/
logo
Софт      18/03/2021

Как автоматизировать копирование файлов

Дмитрий Придатко BLOG

Test Engineer в Sigma Software

На многих проектах есть необходимость копирования огромных файлов — размером 0,5 Гб и более. Например, это может понадобиться для получения последней версии сборки разрабатываемого продукта. В процессе копирования могут возникать сбои или обрывы коннекта, и тогда копирование приходится начинать снова. Хочу поделиться с вами простым скриптом для Windows, который поможет автоматизировать этот процесс, сделать его проще, быстрее и надежнее.

Теперь немного подробностей о том, что делает скрипт:

  • Подключает сетевой диск с папкой, где находятся сборки продукта (это необходимо, если для доступа нужны логин и пароль другого пользователя).
  • Находит последний (по дате) архив со сборкой.
  • Выполняет копирование найденного архива в текущую папку.
  • Отключает сетевой диск.
  • Извлекает содержимое архива в текущую папку.

Для создания скрипта можно воспользоваться приложением Windows Notepad.

Создайте файл GetBuild.cmd в папке, куда будет скачиваться сборка. Далее — текст скрипта с комментариями.

Отключаем вывод выполняемых команд:

Онлайн-курс Frontend-разробник від Powercode academy.
Курс на якому ти напишеш свій чистий код на JavaScript, попрацюєш із різними видами верстки, а також адаптаціями проектів під будь-які екрани. .
Зарееструватися
@ECHO OFF

Объявляем переменную с путем к сборкам:

SET SOURCES="\\server\share"

Подключаем сетевой диск. Эта команда необходима только в случае, если у текущего пользователя нет доступа к shared folder и необходимы логин/пароль другого пользователя (при выполнении команды будет выведен запрос на ввод логина и пароля):

ECHO %date% %time% - Mounting shared folder %SOURCES%

NET USE X: %SOURCES% /USER:

Находим последний по дате архив со сборкой в сетевой папке:

ECHO %date% %time% - Get latest build by date in %SOURCES%

FOR /f %%f IN ('dir %SOURCES% /o:-d /b') DO (

SET FILE=%%f

SET DIR=%%~nf

GOTO NEXT

)

:NEXT

Выполняем копирование с помощью утилиты RoboCopy. Это стандартная утилита, которая входит в поставку Windows, начиная с  Windows Server 2003 / Windows 7.

Если файл, который требуется скопировать, доступен по FTP или HTTP/HTTPS, для копирования можно воспользоваться утилитой cURL.

Копирование утилитой RoboCopy выполняется в неколько потоков (опция /MT), что позволяет существенно повысить скорость копирования. Например, архив 2,4 Гб таким образом можно скопировать всего за 6 минут при достаточной скорости подключения.

А время ожидания при сбое перед повторной попыткой копирования составляет 5 секунд (опция /W:5).

После копирования выполняется проверка того, успешно ли завершено копирование (коды возврата утилиты RoboCopy можно посмотреть здесь):

ECHO %date% %time% - Copying of latest build: %FILE%

ROBOCOPY %SOURCES% "%CD%" %FILE% /MT /W:5

IF %ERRORLEVEL% LSS 8 (

ECHO %date% %time% - Build copied successfully [exit code %ERRORLEVEL%]

) ELSE (

COLOR 4

ECHO %date% %time% - Error %ERRORLEVEL% during build copying

GOTO EXIT

)

Отключаем сетевой диск:

Онлайн-курс Бізнес-аналіз. Basic Level від Ithillel.
В ході курсу студенти навчаться техніці збору і аналізу вимог, документуванню та управлінню документацією, управлінню ризиками та змінами, а також навчаться моделювати процеси і прототипуванню.
Приєднатися
ECHO %date% %time% - Unmounting shared folder %SOURCES%

NET USE X: /D /Y

Извлекаем содержимое архива в текущую папку с помощью 7-Zip и проверяем, была ли успешно завершена операция (предполагается, что утилита 7-Zip установлена по стандартному пути):

 

ECHO %date% %time% - Extract from archive "%CD%\%FILE%"

"C:\Program Files\7-Zip\7z" x -y "%CD%\%FILE%"

IF %ERRORLEVEL% EQU 0 (

COLOR 2

ECHO %date% %time% - Build is ready to install

) ELSE (

COLOR 4

ECHO %date% %time% - Error %ERRORLEVEL% during build extracting

GOTO EXIT

)

:EXIT

PAUSE

COLOR

В процессе работы скрипта в дополнение к сообщениям, которые выдают команды, цветом будет показано наличие ошибок: красный означает, что ошибки есть, зеленый — выполнение завершено успешно.

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Курс QA Manual (Тестування ПЗ мануальне) від Powercode academy.
Навчіться знаходити помилки та контролювати якість сайтів та додатків.
Записатися на курс

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Топ-5 самых популярных блогеров марта

PHP Developer в ScrumLaunch
Всего просмотровВсего просмотров
2229
#1
Всего просмотровВсего просмотров
2229
Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсего просмотров
111
#2
Всего просмотровВсего просмотров
111
Career Consultant в GoIT
Всего просмотровВсего просмотров
93
#3
Всего просмотровВсего просмотров
93
CEO & Founder в Trustee
Всего просмотровВсего просмотров
92
#4
Всего просмотровВсего просмотров
92
Рейтинг блогеров

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: