Скрипт bat: Написание bat файлов — примеры батников | Info-Comp.ru

BAT скрипт для резервного копирования папки

  • 7 апреля 2019

Набросал один маленький BAT скрипт для резервного копирование папки. Внесите свои данные и через scheduler настройте расписание резервного копирования.

Ссылки

7-Zip — бесплатный архиватор

BAT скрипт для резервного копирования папки в Облако Mail.Ru

Функции

  • С помощью robocopy делает резервные копии папки.
  • Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
  • С помощью 7-Zip архивирует резервные копии.
  • Удаляет старые резервные копии.

Код

@echo off
SetLocal EnableDelayedExpansion
rem =============================
rem ====== admin variables ======
rem =============================
set DirName=my_folder
set SourceDir=C:\%DirName%
set BackupDir=B:\%DirName%\daily\
set NumFolders=10
rem =============================
rem ======== 7-Zip path =========
rem =============================
set a7z=%ProgramFiles%\7-Zip\7z. exe
rem =============================
rem == create backup directory == 
rem ==== DD.MM.YYYY_hhmmmss =====
rem =============================
set h=%time:~0,2%
set h=%h: =0%
set FullBackupDir=%BackupDir%%date%_%h%%time:~3,2%%time:~6,2%\
md %FullBackupDir%
rem =============================
rem ====== copy directory =======
rem =============================
robocopy %SourceDir% %FullBackupDir%%DirName%\ /E /ZB /J /NFL /NDL /NJH /NJS /NC /NS /NP 2>nul >nul
rem =============================
rem ====== zip directory ========
rem =============================
"%a7z%" a -tzip -bb0 -bd -sdel "%FullBackupDir%%DirName%.zip" "%FullBackupDir%" 2>nul >nul
rem =============================
rem ==== remove old folders =====
rem =============================
for /f "tokens=* delims=" %%D in ('dir %BackupDir% /ad /b /o-d') do (
	if not %%D=="" (
		if not !NumFolders!==0 (
			set /a NumFolders-=1
		) else (
			rd /s /q %BackupDir%%%D 2>nul >nul
		)
	)
)
  • DirName — название папки
  • SourceDir — что бэкапим
  • BackupDir — куда бэкапим
  • NumFolders — сколько подпапок с бэкапами хранить
  • a7z — путь к 7z. exe

Пример настройки расписания

В Task Scheduler настраиваем новое задание.

Выбираем пользователя, от имени которого будет выполняться резервное копирование. После сохранения задания нас спросят пароль от него. Ставим галку Run whether user is logged or not — запускать даже если юзер не залогинен.

В триггерах настраиваем расписание. У меня резервное копирование происходит раз в сутки.

Указываем ссылку на наш BAT файл.

Настраиваем условия.

Проверяем настройки. OK.

Теперь папка будет резервироваться раз в день. С настройкой NumFolders=10 в BAT файле мы будем хранить данные за последние 10 дней.

Если хотите хранить ежедневные и ежемесячные резервные копии — сделайте два BAT файла и два расписания резервного копирования в разные папки.

Папки с русским названием

От подписчиков:

Для бэкапа папок с русскими названиями нужно открыть Notepad++ и сохранить батник в кодировке ОЕМ 866.

Папки с пробелами

Как копировать папки с пробелами в названии? Пример:

robocopy "C:\Source Path" "C:\Destination Path" /option1 /option2...

Но:

robocopy "C:\Source Path" "C:\Destination Path\ " /option1 /option2...

или лучше используйте:

robocopy "C:\Source Path" "C:\Destination Path\\" /option1 /option2...

Проблема связана с экранированием.

https://ss64.com/nt/syntax-esc.html

Проблема с датой в английской локали

Замените

set FullBackupDir=%BackupDir%%date%_%h%%time:~3,2%%time:~6,2%\

на

set FullBackupDir=%BackupDir%%date:/=%_%h%%time:~3,2%%time:~6,2%\

или

set FullBackupDir=%BackupDir%%date:\=%_%h%%time:~3,2%%time:~6,2%\

или

set FullBackupDir=%BackupDir%%date:~4,2%.%date:~7,2%.%date:~-4%_%h%%time:~3,2%%time:~6,2%\

Или локаль в винде на русскую переведите.

Теги

  • Windows
  • cmd
  • special

💰 Поддержать проект

Похожие материалы

Олег
  • 5 апреля 2019
  • Подробнее о MySQL 8 — резервное копирование BAT файлом

Накидал маленький BAT скрипт для резервного копирование MySQL баз. Внесите свои данные и через scheduler настройте расписание резервного копирования.

Теги

  • sql
  • Windows
  • cmd
  • special
Олег
  • 3 сентября 2020
  • Подробнее о Делаем загрузочную флешку с Windows 7

Понадобилось мне как-то сделать загрузочную USB флешку с дистрибутивом Windows 7. ISO образ у меня был, а Интернета не было. Пришлось делать загрузочную флешку подручными средствами Windows без использования дополнительных программ.

Теги

  • Windows
  • cmd
  • special
Олег
  • 12 февраля 2018
  • Подробнее о BAT скрипт для передергивания сети на сервере Windows Server 2012 R2

Однажды наши виртуальные Windows сервера стали терять сеть. Проблему удалось выявить с сетевыми адаптерами VMware E1000. Примечательно, что в Ubuntu эти сетевухи работают без нареканий, а вот в Windows Server 2012 R2 — сеть иногда зависала.

Теги

  • Windows
  • cmd
  • network
  • special

Почитать

скрипт — Правильное написание bat-скрипта


Вопрос задан


Изменён
2 месяца назад


Просмотрен
23 раза

подскажите пожалуйста, как лучше написать скрипт. Требования к скрипту.

  1. Создать папку типа год-месяц-день-час(каталог arhive)в каталоге(каталог base)
  2. Переместить содержимое каталога base в каталог arhive. изначально в каталоге base содержаться 5 папок в каждой их которых лежит файл
  3. Создать папку типа год-месяц-день-час на сетевом хранилище (каталог nas)
  4. Скопировать содержимое каталога arhive в каталог nas

есть такие наработки, при выполнении этого скрипта создается каталог arhive в каталоге base,
содержимое каталога base (5 папок содержащих по файлу) копируется в каталог arhive, далее создается каталог nas на сетевом хранилище, а копирование к сожалению не работает (нужно именно копирование, а не перемещение), может подскажете альтернативные скрипты для данной задачи, заранее спасибо

set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdati=%dd%-%mm%-%yyyy%
    md E:\BackUpBuh\%curdati%
    E:
    cd E:\BackUpBuh
    move buhbds %curdati%
    move buhbmn %curdati%
    move buhgva %curdati%
    move buhlrb %curdati%
    move buhmal %curdati%
    move buhmta %curdati%
    move buhmva %curdati%
    move buhpas %curdati%
    move buhpmv %curdati%
set h=%TIME:~0,2%
set d=%TIME:~3,2%
set s=%TIME:~6,2%
set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set curdate=%dd%-%mm%-%yyyy%
set curtime=%h%-%d%-%s%
set curdatetime=%curdate%_%curtime%
    md \\NAS\Data_Back_Up_\BackUpBuh\%curdatetime%>nul 2>nul
    robocopy E:\BackUpBuh \\NAS\Data_Back_Up_\BackUpBuh 
  • bat
  • скрипт






1







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации



Почта

Необходима, но никому не показывается




By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.


Пример пакетного скрипта Windows

В этом примере создается изображение Normalized Difference Vegetation Index (NDVI) из входного изображения QuickBird путем вызова envitaskengine через пакетный скрипт Windows.

  1. Запуск командного окна DOS.
  2. Создайте временный каталог с разрешением на запись, куда можно записать временный вывод. Перейдите в этот каталог.
  3.  компакт-диск C:\
     мкдир песочница 
     компакт-диск с песочницей 
  4. Запустите сценарий с необходимыми аргументами следующим образом. Запустите скрипт из каталога с правами на запись. Образ NDVI будет создан в каталоге песочницы. Если вы не хотите экранировать обратную косую черту дополнительными обратными косыми чертами (как показано ниже), замените их косой чертой вместо этого.
  5.  "C:\\idl_install_dir\\examples\\taskengine\\example_spectral_index.bat" "C:\\envi_install_dir\\data\\qb_boulder_msi" "Normalized Difference Vegetation Index" "C:\\sandbox\\ndvi.dat" 

    Где idl_install_dir и envi_install_dir — это пути установки IDL и ENVI в вашей системе.

Копия скрипта

Вот копия скрипта example_spectral_index.bat. Используйте это как шаблон для написания собственного сценария, изменяя аргументы по мере необходимости.

 @echo off 
   
 ::------- 
 :: Usage 
 ::------- 
   
 GOTO START 
   
 :ИСПОЛЬЗОВАНИЕ 
    эхо. 
    эхо Использование: 
    эхо. 
    echo example_spectral_index.bat inputRasterFilename SpectraIndex outputRasterFilename 
    echo. 
    эхо Пример: 
    эхо.  
    echo example_spectral_index.bat "c:/input.dat" "Нормализованный разностный индекс растительности" "c:/output.dat" 
    echo. 
   
    выход /B 1 
   
 :СТАРТ 
if [%1]==[] GOTO USAGE 
    if [%2]==[] GOTO USAGE 
    if [%3]==[] GOTO USAGE 
   
 ::------- --------- 
 :: Входные аргументы 
 ::---------------- 
   
 :: Входные аргументы — строки 
    set "input_file =%1" 
    set "spectral_index=%2" 
    set "output_raster_uri=%3" 
   
 :: Удалите двойные кавычки из аргументов, если они есть 
    set input_file=%input_ файл:"=% 9" 
   
 ::---------------------------------------------------------- -- 
 :: Сборка входных данных JSON с описанием выполняемой задачи 
 ::------------------------------- -------------- 
   
    set json={ 
    set json=%json%    "taskName"    :    "SpectralIndex" 
    set json=%json%  ," входные параметры" : { 
    set json=%json%        "input_raster": 
    set json=%json%          {"url" : %input_file%, "factory":"URLRaster"} 
    set json=%json%       ,"index" : %spectral_index% 
    set json=%json%     ,"output_raster_uri": %output_raster_uri% 
    set json=%json%     } 
    установить json=%json%} 
   
 ::----------------------------------------------------------- ---- 
 :: Получить местоположение envitaskengine относительно 
 :: местоположения этого скрипта.  
 ::---------------------------------------------------------------------------- -- 
    set mypath=%~dp0 
    ::now перейти на уровни 
    pushd %mypath% 
    cd ../.. 
    set loc=%CD% 
    popd 

9000 9  

 ::---------- ---------------------------------- 
 :: Запустить задачу. 
 :: Выходные данные JSON задачи будут записаны в стандартный вывод. 
 ::-------------------------------------------------------------------------- 
 эхо %json% | «%loc%/bin/bin.x86_64/envitaskengine» 

BatchScript@1 — задача пакетного сценария v1

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья

Используйте это задание для запуска сценария Windows .bat или .cmd . При необходимости сценарий .bat или .cmd может постоянно изменять переменные среды.

Синтаксис

 # Пакетный скрипт v1
# Запустите команду Windows или пакетный сценарий и при необходимости разрешите ему изменить среду.
- задача: BatchScript@1
  входы:
    имя файла: # строка. Необходимый. Путь.
    #аргументы: # строка. Аргументы.
    #modifyEnvironment: False # логическое значение. Изменить среду. По умолчанию: Ложь.
  # Передовой
    #workingFolder: # строка. Рабочая папка.
    #failOnStandardError: false # логическое значение. Сбой при стандартной ошибке. По умолчанию: ложь.
 
 # Пакетный скрипт v1
# Запустите сценарий Windows cmd или bat и при необходимости разрешите ему изменять среду.
- задача: BatchScript@1
  входы:
    имя файла: # строка. Необходимый. Путь.
    #аргументы: # строка.  Аргументы.
    #modifyEnvironment: False # логическое значение. Изменить среду. По умолчанию: Ложь.
  # Передовой
    #workingFolder: # строка. Рабочая папка.
    #failOnStandardError: false # логическое значение. Сбой при стандартной ошибке. По умолчанию: ложь.
 
 # Синтаксис YAML не поддерживается в TFS 2018.
# Используйте классический конструктор для добавления и настройки задач.
# Подробнее о входных данных, поддерживаемых этой задачей, см. в следующем разделе «Входные данные».
 

Входы

имя файла Путь
строка . Необходимый.

Путь к сценарию .cmd или .bat для выполнения. Это должен быть полный путь или путь относительно рабочего каталога по умолчанию. (Обратите внимание, что рабочий каталог может отличаться от workingFolder , который можно указать для этой задачи.)

arguments Arguments
string .

Аргументы, переданные сценарию .cmd или .bat .

изменить среду изменить среду
логическое значение . Значение по умолчанию: Ложь .

Определяет, повлияют ли изменения переменных среды на последующие задачи.

рабочая папка Рабочая папка
строка .

Текущий рабочий каталог при запуске скрипта. По умолчанию это папка, в которой находится скрипт.

failOnStandardError Ошибка при стандартной ошибке
логическое значение . Значение по умолчанию: ложь .

Если это правда, эта задача завершится ошибкой, если какие-либо ошибки будут записаны в Поток StandardError .

Опции управления задачами

Все задачи имеют опции управления в дополнение к своим входным данным. Дополнительные сведения см. в разделе Параметры управления и общие свойства задач.

Выходные переменные

Нет.

Используйте это задание для запуска сценария Windows .bat или .cmd.
При желании разрешите ему постоянно изменять переменные среды.

Примечание

Эта задача несовместима с контейнерами Windows. Если вам нужно запустить пакетный сценарий в контейнере Windows, используйте задачу командной строки.

Информацию о поддержке нескольких платформ см. в разделе Межплатформенные сценарии.

Примеры

Создайте test.bat в корне репозитория:

 @echo off
echo Hello World от %AGENT_NAME%.
echo Мой идентификатор: %AGENT_ID%.
эхо-содержимое AGENT_WORKFOLDER:
@каталог %AGENT_WORKFOLDER%
эхо AGENT_BUILDDIRECTORY содержимое:
@каталог %AGENT_BUILDDIRECTORY%
эхо BUILD_SOURCESDIRECTORY содержимое:
@каталог %BUILD_SOURCESDIRECTORY%
эхо Снова и снова.
 

Чтобы запустить этот сценарий, добавьте в конвейер следующую задачу.