» »

Общий синтаксис командной строки. Общий синтаксис командной строки Winrar консольные команды

04.11.2021

На одном сервере нужно было настроить бекапчик. На линуксе через cron все делается, а на windows с помощью Планировщика задач . Так вот задача — добавить папку в архив rar или zip через bat-файл (батник). Можно также с помощью cmd выполнять, кому как удобно. Я решил написать простой bat для вызова winrar, добавления папки в архив и помещения ее в нужное место. Потом в планировщике выполняю этот скрипт с заданым интервалом.

Как создать bat файл и заархивировать папку в rar

Сначала хочу сказать, что добавить папку в архив можно абсолютно любого расширения — rar, zip и другие поддерживаемые WinRAR-ом. А теперь по пунктам:

1) открываем любой блокнот (лучше всего notepad++);
2) пишем туда команду: start WinRAR A «D:\kudaarhiv.rar» «D:\Program Files\bdseoru»
3) сохраняем как *.bat (например, v_archive.bat).

Как заархивировать папку rar с помощью bat

Разьясню:
1 — запускаем winrar. Команда start запускает любую программу. Если не срабатывает, пропишите полный путь к.exe-шнику.
2 — команда A добавляет файлы в архив. Подробнее читайте справочник от самого winrar.
3 — куда архивируем папку и файлы. Указывайте полный путь , название архива и расширение.
4 — какую папку архивируем. Пишем полный путь.

Все, теперь запускаем и проверям. Если сработало — то в Планировщик.

Пробел в названии — не могу запустить bat

Если у вас есть в названии папки и файла пробелы, то заключите этот путь в кавычки , как это сделал я. Тогда все отлично работает.

Если не написать start

Тогда просто будет выдавать ошибку, что неизвестная команда. Без start можно выполнить команду в cmd

Как заархивировать папку в rar через cmd

Папку можно добавить в архив и с помощью простой команды в cmd:
WinRAR A «D:\android-locat\Vega.rar» «D:\Program Files\bdseoru»


Как видите, тут уже «запускать» winrar отдельной командой start не нужно.

Как добавить в архив вложенные папки и файлы

Чтобы добавить в архив.rar или.zip вложенные папки и файлы, следует добавить ключ -r. То есть команда будет выглядеть следующим образом:
WinRAR A -r «D:\android-locat\Vega.rar» «D:\Program Files\bdseoru»

Как удалить файлы после архивации в winrar

Очень часто также возникает нужда удалить заархивированные файлы и папки. Для этого нужно добавить команду -ep1. Пример кода:
WinRAR A -r -ep1 «D:\android-locat\Vega.rar» «D:\Program Files\bdseoru»

То есть мы архивируем папку, обрабатываем вложенные папки и файлы, а после этого их удаляем. Если архив ложиться в эту папку, то он не удалиться, а появится ошибка, что папка не пустая. Поэтому лучше сохранять архив в другую папку (лучше просто убирать последний слеш).

Более подробно читайте на официальном сайте команды winrar.

Синтаксис командной строки

WinRAR допускает управление из командной строки. Общий синтаксис командной строки таков:

WinRAR <команда> -<ключ1> -<ключN> <архив> <файлы> <@файл-список> <путь для извлечения\>

команда Комбинация символов, определяющая действие, которое будет выполнять WinRAR.
ключ Ключи используются для определения специфических действий, степени сжатия, типа архива и пр.
архив Имя обрабатываемого архива.
файлы Имена обрабатываемых файлов.
файл-список Файлы-списки - это обычные текстовые файлы, содержащие имена файлов для обработки. Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки. В файл-список допускается помещать комментарии, признак начала комментария - символы //. Например, для архивирования файлов *.txt из папки c:\work\doc, файлов *.bmp из папки c:\work\image и всех файлов из папки c:\work\misc можно создать backup.lst, содержащий следующие строки:

c:\work\doc\*.txt//резервная копия текстов

c:\work\image\*.bmp//резервная копия рисунков

После этого для архивирования достаточно будет выполнить команду:

winrar a backup @backup.lst

В одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки. Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. WinRAR обработает все файлы).

путь для извлечения Используется только с командами e и x и указывает папку, в которую нужно извлекать файлы. Если эта папка не существует, то она будет создана.

Примечания

а) Если не указаны ни файлы , ни файл-список , то подразумевается шаблон *.* , т.е. WinRAR обработает все файлы.

б) Если не указано расширение архива, то WinRAR будет использовать формат архива по умолчанию, выбранный в профиле архивации по умолчанию, но если вы хотите указать тип архива явно, то это можно сделать добавлением к имени архива расширения RAR или ZIP.

в) Ключи, введённые в командной строке, имеют более высокий приоритет, чем соответствующие установки в диалоге конфигурации, т.е. используются параметры, заданные ключами.

г) Для команд C , E , S , T , RR , K и X в имени архива допускается использовать шаблоны, поэтому одной командой можно обработать сразу нескольких архивов. Более того, если вместе с этими командами указать ключ , то поиск архивов будет вестись и во всех вложенных папках.

д) Некоторые команды и ключи применимы только к архивам RAR, некоторые к архивам RAR и ZIP, а некоторые к архивам всех поддерживаемых форматов. Это зависит от возможностей, заложенных в формат архива.

е) Команды и ключи не зависят от регистра символов, поэтому вы можете набирать их как строчными, так и прописными буквами.

Синтаксис командной строки

WinRAR допускает управление из командной строки. Общий синтаксис командной строки таков:

WinRAR <команда> -<ключ1> -<ключN> <архив> <файлы…> <@файл-список…> <путь для извлечения\>

команда Комбинация символов, определяющая действие, которое будет выполнять WinRAR.
ключ Ключи используются для определения специфических действий, степени сжатия, типа архива и пр.
архив Имя обрабатываемого архива.
файлы Имена обрабатываемых файлов.
файл-список Файлы-списки - это обычные текстовые файлы, содержащие имена файлов для обработки. Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки. В файл-список допускается помещать комментарии, признак начала комментария - символы //. Например, для архивирования файлов *.txt из папки c:\work\doc, файлов *.bmp из папки c:\work\image и всех файлов из папки c:\work\misc можно создать backup.lst, содержащий следующие строки:

c:\work\doc\*.txt//резервная копия текстов

c:\work\image\*.bmp//резервная копия рисунков

После этого для архивирования достаточно будет выполнить команду:

winrar a backup @backup.lst

В одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки. Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. WinRAR обработает все файлы).

путь для извлечения Используется только с командами e и x и указывает папку, в которую нужно извлекать файлы. Если эта папка не существует, то она будет создана.

Примечания

а) Если не указаны ни файлы , ни файл-список , то подразумевается шаблон *.* , т.е. WinRAR обработает все файлы.

б) Если не указано расширение архива, то WinRAR будет использовать формат архива по умолчанию, выбранный в профиле архивации по умолчанию, но если вы хотите указать тип архива явно, то это можно сделать добавлением к имени архива расширения RAR или ZIP.

в) Ключи, введённые в командной строке, имеют более высокий приоритет, чем соответствующие установки в диалоге конфигурации, т.е. используются параметры, заданные ключами.

г) Для команд C , E , S , T , RR , K и X в имени архива допускается использовать шаблоны, поэтому одной командой можно обработать сразу нескольких архивов. Более того, если вместе с этими командами указать ключ , то поиск архивов будет вестись и во всех вложенных папках.

д) Некоторые команды и ключи применимы только к архивам RAR, некоторые — к архивам RAR и ZIP, а некоторые — к архивам всех поддерживаемых форматов. Это зависит от возможностей, заложенных в формат архива.

е) Команды и ключи не зависят от регистра символов, поэтому вы можете набирать их как строчными, так и прописными буквами.

Общее описание

Метод основан на сочетании возможностей Windows (назначенные задания) и архиватора WinRAR (управление из командной строки), WinRAR потребуется «необрезанный».

Настройки «Назначенного Задания» позволят установить:

  • -Каким образом будет запускаться задание: при включении компьютера, по графику, вручную.
  • -Из какого режима работы компьютера будет запускаться задание: из рабочего или спящего.
  • -Дополнительные настройки для ноутов и прочего антиквариата ПК.

Настройки WinRAR позволят: указать адрес архива, каталоги/файлы/списки для архивации. Уточнить состав архива по принципам: расширения файлов, время создания, наличие/отсутствие в архиве, «освежить» архив (обновить только файлы, которые в архиве есть), добавить файлы, вновь появившиеся по архивируемому адресу, удалить те, которые «пропали», впрочем, о возможностях WinRAR позже на примерах.

ВНИМАНИЕ! Если в настройках Winrar не указаны каталоги/файлы/списки для архивации, а указан только адрес архива: WinRAR займётся архивацией всей системы, и всего того, что доступно системе в данный момент. Это может привести к «нехорошему».

Проверено для : Windows 2000/2000 Server/XP/Server 2003/Windows 7/Server 2008.

Настройки на примерах

Описание по принципу: цель – способ решения, отклонения не описываю, только краткая справка в скобках. Уверен, на основе примеров Вы сможете составить именно Ваше задание. Итак:

ЦЕЛЬ : 1 раз в неделю архивировать все БД 1с, лежащие в одном каталоге. Задание должно добавлять в архив новое, удалять отсутствующее, статичные (неизменённые) файлы не трогать: обрабатываться будут только файлы: вновь созданные, изменённые, удалённые. На «автоматике» это будет выглядеть так:

Создаём в Windows новое "назначенное задание". Запускается мастер. Предлагает выбрать программу. Естественно, выбираем WinRAR . Пишем имя Задания, когда ему выполняться. Пошагово заполняем..., включите «Установить дополнительные…».

Что? Пишет, что работать не будет? Поэтому: открываем наше задание (входим в Панель Управления - Назначенные Задания), включаем флаг «Выполнять только при выполненном входе в систему», переходим на закладку «Параметры» и включаем «Разбудить комп…». Это надо для того, чтобы компьютер, оставленный в спящем режиме, «проснулся» для выполнения задания. Для запуска в назначенное время "разрешаем" компу использовать Спящий режим. Если по графику задание должно запуститься, к примеру, ночью, вечером перед этим комп не выключаем, а переводим в спящий режим. В нужный момент комп проснётся, выполнит, а может и выключиться после завершения, такая возможность есть в настройках WinRAR.

Итак, настраиваем WinRAR . Открываем задание, в первой строке «Выполнить» видим примерно:

C:\PROGRA~1\WinRAR\WinRAR.exe

Это полный путь запускаемой программы. Слово WinRAR может заменить эту строку, т.к. для Windows это УЖЕ команда.

WinRAR – заменитель.

В этом состоянии наше задание работоспособно, но оно только запустит программу WinRAR . Теперь настройки.

Настройки пишутся в параметре «Выполнить» после уже имеющегося (C:\PROGRA~1\WinRAR\WinRAR.exe) через пробел.

Общий синтаксис командной строки:

WinRAR – – //в этом примере «

Что требуется для нашего задания:

WinRAR u - as F :\ Arhiv \ Data _1 C . rar D :\ Data _1 C //выделил цветом сегменты строки. По цвету и комментарии.

u – команда. Обновляет файлы в архиве, обрабатывает только изменённые и добавляет новые.

-as – ключ. Удаляет из архива файлы, отсутствующие в источнике.

Таким образом, комбинация команды и ключа синхронизирует архив с исходными данными.

F :\ Arhiv \ Data _1 C . rar – это наш архив с адресом. Архив, хоть пустой, уже должен быть по указанному адресу.

D :\ Data _1 C – архивируемые данные. В данном случае – каталог.

ИТАК, порядок: команда – ключ/ключи – архив – файлы/@файл-список. Разделитель «_» (пробел).

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

ЦЕЛЬ : архивировать ценные данные (документы, избранное и пр.) ежедневно. Чтобы процесс не отвлекал, включает и выключает комп на автомате, добавлены 2 новых ключа. Отличие от 1-го задания в том, что данные находятся в разных каталогах. Придётся использовать файл-список. Файл-список – это текстовый файл, в котором:

-первая запись начинается с первого символа первой строки

-последующие записи начинаются с новой строки

-ни каких лишних символов, комментариев и пр.

Если указываете вместо адреса данных файл-список, учтите, в этом случае параметр (адрес файла) начинается с символа @ (собака).

В файл-список можно включать файлы, каталоги, выбрать файлы по расширению и пр.

Нам потребуется строка:

WinRAR u - as dh IOFF F :\ Arhiv \ Doc . rar @ C :\ SpisokArh . txt

-dh – позволяет архивировать открытые в данный момент файлы. Включил потому, что частенько компьютер отправляю в «спячку» с открытыми документами и программами (кроме 1с). При этом самое плохое – в архив пойдёт и несохранённая копия файла. А это не критично, т.к. при открытии такого архива компьютер «вспомнит» о несохранённых версиях. Что с ними делать – Ваше дело.

-IOFF – выключение компьютера после завершения архивации. Т.о., компьютер это делает совершенно самостоятельно. Одно НО: именно ВЫКЛЮЧЕНИЕ, а не переход в спящий режим. В связи с этим рассчитывайте размещение заданий во времени, если у Вас несколько заданий на ночь, используйте этот ключ только на последнем задании, да так, что-бы этот ключ не "тормознул" другие задания, которые не успели завершиться.

@ C :\ SpisokArh . txt – файл-список. Вот его текст :

C:\Documents and Settings\Admin\Избранное

C:\Documents and Settings\Admin\Рабочий стол\Закачки

Не буду описывать все вариации, которые использую, думаю, у Вас фантазии на большее хватит, я лишь намекнул. Читайте справку WinRAR , там полные списки ключей и команд, рекомендации по использованию.

Дополнительно

  • WinRAR способен архивировать открытые в данный момент файлы (читай: открытые БД 1С), но! Если архивировать БД «на ходу» может получиться такое… 1с-ка во время архивации БД может изменить файлы, в архиве БД получится, что файлы *. dbf не согласованы. Отсюда правило: на момент архивации все архивируемые данные (1 C ) должны быть закрыты. Для прочих (MS Office ) не актуально.
  • Новый архив автоматически не создаётся! Необходимо указывать уже имеющийся, хоть пустой.
  • При заполнении нового архива процедура может затянуться на…, потом всё будет работать в соответствии с заданными параметрами.

P . S .: Извиняюсь за скудность примеров: описал только самое наглядное. Дальше – дело Ваших потребностей и фантазии. Читайте справку WinRAR, раздел "Режим командной строки".

  • Вступление
  • Как будет работать бэкап
  • Скрипты
  • Командная строка WinRAR
  • Командные файлы
  • Планировщик
  • Заключение
  • Ссылки

Вступление

Бэкапы надо делать всегда. Особенно для серверов. Это аксиома. Существуют разные способы бэкапа - просто копирование, архивация, множество специализированного софта (в том числе, например, и штатный бэкап от Microsoft), работающего с дисками, лентами, МО и т.д. Но что делать, если сторонний софт устанавливать нельзя, а возможностей штатного не хватает? Например, хочется иметь бэкап некоторых ценных папок сервера, в автоматическом режиме, за, скажем, последнюю неделю? Писать свою софтину? Можно. Но не охота. Из пушки по воробьям. Охота обойтись просто скриптом. И в этом нам поможет хороший архиватор WinRAR , встроенный планировщик Windows и книга Джесси Торреса "Скрипты для администратора Windows ".

Как будет работать бэкап

Итак, мне требуется:

  • Хранить бэкап за каждый день в виде архивного файла
  • Каждый файл должен создаваться с уникальным именем (в идеале включать дату создания в имя файла)
  • Процесс создания бэкапа должен проходить в автоматическом режиме
  • Файлы старше 1 недели должны автоматически удаляться

Архивацией будет заниматься WinRAR , он же будет автоматически именовать файлы. Определять возраст и удалять старые файлы будет скрипт (VBScript ), а автоматизировать все я буду с помощью встроенного Планировщика Windows .

Скрипты

Основу скриптов составляют процедуры из книги Джесси Торреса "Скрипты для администратора Windows " (а конкретно из главы 3 "Обслуживание файлов "). Они были дополнены мной для реализации моих задач.
Вот какие функции нам понадобятся (привожу код целиком):

" ---------- " Начало основной секции. Отсюда начнется выполнение при запуске скрипта. Set FSO = CreateObject("Scripting.FileSystemObject") " директория, где будут храниться бэкапы. Вы должны вписать свою директорию " вместо "X:\DailyBackup" sDir = "X:\DailyBackup" Set objDir = GetFolder(sDir) DeleteOlderFiles(objDir) " ---------- Секция функций " Получить файл Function GetFile(sFile) On Error Resume Next Set FSO = CreateObject("Scripting.FileSystemObject") Set GetFile = FSO.GetFile(sFile) if err.number 0 then WScript.Echo "Error Opening file " & sFile & VBlf & "["&Err.Description&"]" Wscript.Quit Err.number end if End Function " Получить папку Function GetFolder (sFolder) On Error Resume Next Set GetFolder = FSO.GetFolder(sFolder) if err.number 0 then WScript.Echo "Error Opening folder " & sFolder & VBlf & "["&Err.Description&"]" Wscript.Quit Err.number end if End Function " удалить один файл (имя файла передается в sFile) Sub DeleteFile(sFile) On Error Resume Next FSO.DeleteFile sFile, True if err.number 0 then WScript.Echo "Error Deleteing file " & sFile & VBlf & "["&Err.Description&"]" Wscript.Quit Err.number end if End Sub " Удалить файлы старше 7 дней Sub DeleteOlderFiles(objDir) " просматриваем все файлы в директории for each efile in objDir.Files " используем DateLastModified, а не DateCreated, поскольку " DateCreated не всегда возвращает правильную дату FileDate = efile.DateLastModified Age = DateDiff("d",Now,FileDate) " в данном случае возраст файла не больше семи дней If Abs(Age)>7 Then DeleteFile(efile) End If next End Sub

Этот код помещаем в файл remove_old_backups.vbs .

Командная строка WinRAR

Архиватор WinRAR обладает мощной поддержкой командной строки. В частности, он может формировать имя файла на основе пользовательского шаблона, включая в него разную служебную информацию, например, дату. Что нам, собственно говоря, и требуется. Кроме того, он умеет работать со списком файлов или директорий на архивацию, что сильно облегчает редактирование командного файла.

Я использую следующую командную строку для архивирования (прописана в файле make_daily.bat):

"c:\program files\winrar\winrar.exe" a -s -r -rr10p -dh -ed -m3 -ilogC:\DailyBackupScript\dailybackup.log -ag+YYYYMMDD X:\DailyBackup\backup

Разберем ее по составляющим:

  • "c:\program files\winrar\winrar.exe" - путь к WinRAR-у
  • a - команда на добавление файлов
  • -s - режим сжатия "solid "
  • -r - с поддиректориями
  • -rr10p - на всякий случай добавляем информацию для восстановления (-rr), в количестве 10% (10p)
  • -dh - открывать шареные фалы. Полезно, если кто-нибудь засиделся до 12 ночи, и редактирует файл, который должен уйти в бэкап
  • -ed - не добавлять пустые директории
  • -m3 - степень сжатия 3
  • -ilogC:\DailyBackupScript\dailybackup.log - вести лог (-ilog) и записывать его в "C:\DailyBackupScript\dailybackup.log"
  • -ag+YYYYMMDD X:\DailyBackup\backup - формировать имя файла, прибавляя в начало текущий год, месяц и число. Имя файла будет иметь примерно такой вид: 20060927backup.rar
  • X:\DailyBackup\backup - папка, куда писать бэкапы и имя бэкапа (к которому в начало дописываются год, месяц, число)

Командные файлы

Вся работа по созданию бэкапа строится на основе командных файлов (.bat-файлов). У меня их два:

  • make_daily.bat - содержит команды для создания архивного файла или файлов.
  • backup_task.bat - выполняет следующие действия:
    • вызывает интерпретатор скриптов cscript и передают ему на выполнение скрипт, удаляющий старые файлы.
    • вызывает make_daily.bat и передает ему в качестве параметра либо папку, которую надо архивировать, либо файл-список (в котором несколько папок на архивацию).
  • В свою очередь, backup_task.bat вызывается Планировщиком Windows в назначенное время

Содержимое файла make_daily.bat (в одну строку):

@"c:\program files\winrar\winrar.exe" a -s -r -rr10p -dh -ed -m3 -ilogC:\DailyBackupScript\dailybackup.log -ag+YYYYMMDD X:\DailyBackup\backup %1

Содержимое файла backup_task.bat :

@cscript remove_old_backups.vbs call make_daily.bat @backup.lst

Для работы также необходимо создать файл backup.lst (обычный текстовый файл). Он должен содержать список директорий, которые включаются в бэкап. Каждая директория должна располагаться на отдельной строчке, например, так:

C:\Projects c:\VeryImportantProjects c:\Folder Name With Spaces\SubFolder

Обратите внимание, что имя директории-источника, содержащее пробелы, не обязательно заключать в кавычки, если вы пользуетесь файл-списком. Если же вы передаёте его напрямую, то кавычки обязательны. Не ставьте завершающий слэш - WinRAR этого не поймёт.

Планировщик

Планировщик можно вызвать через меню Start|Programs|Accessories|System Tools|Scheduled Tasks , или через Control Panel . Откроется папка Scheduled Tasks , в которую и надо добавить новую задачу. Это можно сделать следующим образом (я привожу только основные шаги).

Дважды щелкаем Add Scheduled Task, чтобы добавить новую задачу

Выберем наш bat-файл:

Зададим имя и периодичность задачи

Зададим время запуска

Зададим учетную запись и пароль, от имени которой будет выполняться задача. Обязательно!

Задача добавлена

Редактировать свойства задачи можно, щелкнув правой кнопкой мыши на иконке задачи в папке Sheduled Tasks и выбрав пункт меню Properties .

Заключение

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