Автоматизація створення резервів або Консольні основи bat-ники





Думаю, що багато хто, так чи інакше, періодично створюють резервні копії (так звані backup-и) тих чи інших файлів і папок. Начебто все звично і робити нічого особливо складного не треба: вставити флешку, відкрити «Мій комп’ютер«, знайти що треба скопіювати, виділити, тицьнути мишкою, вибрати «скопіювати», перебратися в потрібний каталог, тицьнути «вставити» і тд.

Але найчастіше всі ці кліки і зайві рухи тіла кілька стомлюють і віднімають дорогоцінний час, особливо при частих копіювання одних і тих же даних. У цій статті я розповім як автоматизувати цей процес за допомогою консолі, а точніше написання bat-файлу. Поїхали.

Трохи теорії.

Для початку трохи про те, що таке bat-файли, навіщо вони потрібні і з чим їх їдять. Щоб не винаходити велосипед скористаюся витягом з Вікіпедії:

Пакетний файл (англ. Batch file) — текстовий файл в MS-DOS, OS / 2 або Windows, що містить послідовність команд, призначених для виконання командним інтерпретатором. Після запуску пакетного файлу, програма — інтерпретатор (як правило COMMAND.COM або CMD.EXE) читає його рядок за рядком і послідовно виконує команди. Пакетний файл — аналог shell script в Unix-подібних операційних системах.

Пакетні файли корисні для автоматичного запуску додатків. Основна область застосування — автоматизація найбільш рутинних операцій, що регулярно доводиться здійснювати користувачеві комп’ютера. Прикладами таких операцій можуть служити — обробка текстових файлів; копіювання, переміщення, перейменування, видалення файлів; робота з папками; архівація; створення резервних копій баз даних і т. п. Пакетні файли підтримують оператори if і goto (а в системах сімейства Windows NT і розширений оператор for), що дозволяє обробляти результати виконання попередніх команд або додатків і залежно від цього виконувати далі той чи інший блок команд (як правило, у разі вдалого завершення додаток повертає 0 у змінній errorlevel; у разі невдалого — 1 або більше значення).

Пакетні файли в DOS мають розширення .bat; для інших операційних систем вони можуть мати інші розширення — наприклад, .CMD в Windows NT і OS / 2, або .BTM в 4DOS або подібних оболонках.

З теорією розібралися, приступимо до, власне, практиці, а саме створення 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: Якщо мені не зраджує пам’ять, то це шматочок теми з розумних адмінських книжок, а саме з розділу «Автоматизація адміністрування« .. так що можете собою пишається

Якщо потрібна автоматизація бухгалтерії за допомогою програми, то можливо варто скористатися рішеннями «Інфо-підприємство», благо там є кілька видів програм для різних потреб і потреб.