Как разархивировать bat файл

Обновлено: 04.07.2024

Батник для архивирования файлов и папок. Бэкап 1С баз.

Сейчас я расскажу о том, как при помощи bat-файлов можно архивировать файлы и папки как на локальном компьютере, так и в сети организации.

Внимание. Для использования данного метода архивирования у Вас на компьютере должна быть установлена программа WINRar.

Рассмотрим пока самый простой вариант архивирования записью в одну строчку.

. При копировании кавычки надо переписать (поменять).

Теперь коротко о том что тут написано

Вот что бывает без указания параметра chcp 1251

По факту можно создать файл с расширением *.bat, сохранить в нем одну строчку и все будет работать. Но это всего лишь одноразовый и не удобный вариант.

Присвоение архиву даты создания. Автоматическое архивирование батником.

0,2%
set month=%DATE:

3,2%
set year=%DATE:

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

Архивирование с заданным количеством бэкапов (архивов)

К примеру, Вы захотели, чтобы у Вас всегда был архив за три последних дня.

Для такого метода бэкапа Вам понадобится, своего рода, временное хранение архивного файла. Проще говоря, папка отличная от места хранения основных бэкапов.
Вот как будет выглядеть весь скрипт:

0,2%
set month=%DATE:

3,2%
set year=%DATE:

В итоге у нас получилось 3 архива в папке, последний из которых с указанием даты создания

Как видите, я создал отдельную папку D:\timearh для основного временного архива.

if exist D:\arhiv\papka_03*.rar del D:\arhiv\papka_03*.rar
if exist D:\arhiv\papka_02*.rar ren D:\arhiv\papka_02*.rar papka_03.rar
if exist D:\arhiv\papka_01*.rar ren D:\arhiv\papka_01*.rar papka_02.rar

Эти три команды нужды ля переименовывания основных файлов в сторону увеличения четности и удаления самого последнего файла, в нашем случае третьего. По сути, количеством этих строчек Вы и регулирует общее количество создаваемых архивов. Для увеличения бэкапов достаточно лишь дописать нужное количество строчек и не забыть переименовать порядок.

Данный вариант идеально подходит для бэкапа 1С баз. Он полностью автоматизирован, можно спокойно хранить месячный (а то и больший) архив баз.

Можно ли разархивировать файлы через командную строку? Предпочтительно использовать инструменты с открытым исходным кодом/бесплатно.

ОТВЕТЫ

Ответ 1

Вы можете использовать:

Ответ 2

Если у вас уже есть Java на вашем компьютере, и каталог bin находится в вашем пути (в большинстве случаев), вы можете использовать командную строку:

или если нет в вашем пути:

Полный набор опций для инструмента jar доступен здесь.

Ответ 3

Во-первых, напишите утилиту unzip, используя vbscript, чтобы запустить собственную функцию распаковки в Windows. Затем вытащите script из своего пакетного файла и затем вызовите его. Тогда это так же хорошо, как самостоятельное. Я делал это в прошлом для многочисленных задач. Таким образом, он не требует необходимости сторонних приложений, а всего лишь один пакетный файл, который делает все.

Используйте его следующим образом:

Ответ 4

7-Zip, он с открытым исходным кодом, бесплатный и поддерживает широкий диапазон форматов.

Ответ 5

Как говорили другие, 7-zip отлично.

Примечание. Я собираюсь сделать zip и распаковать файл. Unzip находится внизу.

Версия командной строки 7-Zip

Вы можете поместить следующее в .bat файл

Я показал несколько вариантов.

-r является рекурсивным. Обычно, что вы хотите с zip-функциями.

a для "архива". Это имя выходного zip файла.

-p для пароля (необязательно)

-w является исходным каталогом. Это правильно вложит ваши файлы в zip файл без дополнительной информации о папке.

-mem - это сила шифрования.

Есть и другие. Но выше вы получите работу.

ПРИМЕЧАНИЕ. Добавление пароля сделает файл zip недружелюбным, когда дело доходит до просмотра файла через проводник Windows. Для просмотра содержимого файла клиенту может понадобиться собственная копия 7-zip (или winzip или другой).

EDIT. ( просто лишние вещи).

Таким образом, команда zip будет (с версией командной строки 7-zip-инструмента).

Теперь распаковать часть: (чтобы распаковать файл, который вы только что создали)

Ответ 6

Спасибо, Rich, я обращу внимание на это. Итак, вот script для моего собственного решения. Он не требует сторонних инструментов распаковки.

Включите script ниже в начале командного файла для создания функции, а затем для вызова функции команда. cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Вот script, чтобы добавить в начало.

Ответ 7

Существует статья о том, как получить доступ к встроенной в Windows.ZIP-обработке файлов с помощью VBscript:

(Последний разворот кода относится к извлечению)

Ответ 8

Возьмите исполняемый файл из info-zip.

Info-ZIP поддерживает аппаратные средства от микрокомпьютеров вплоть до суперкомпьютеров Cray, работающих практически на всех версиях Unix, VMS, OS/2, Windows 9x/NT и т.д. (aka Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS/QDOS, MVS и OS/390 OE, VM/CMS, FlexOS, Tandem NSK и Human68K (японский). Существует также некоторая (старая) поддержка LynxOS, TOPS-20, AOS/VS и Novell NLM. Общие библиотеки (DLL) доступны для Unix, OS/2, Win32 и Win16, а графические интерфейсы доступны для Win32, Win16, WinCE и Mac OS.

Ответ 9

Фактическая строка командной строки может выглядеть примерно так:

Ответ 10

Скопируйте приведенный ниже код в пакетный файл и выполните. Ниже требуется, чтобы Winzip был установлен/доступен с вашего устройства. Внесите изменения в соответствии с вашими потребностями.

В этой статье я буду писать BAT файл для групповой перепаковки RAR архивов в архивы нового формата WinRAR 5 и параллельной проверке их целостности.

Начну с описания поставленной задачи. Есть набор файлов, RAR архивы с какой-то информацией, в моём случае с книгами. Эти файлы все лежат в одной папке и имеют последовательную нумерацию. Последовательная нумерация не важна, главное что все файлы имеют расширение файла RAR. Вот примерный список:

  1. Протестировать архивный файл;
  2. Если файл без повреждений, то распаковать его в папку;
  3. Добавить в эту папку файл с сылкой на сайт (URL-файл);
  4. Если в архиве есть вложенный архив, то и его распаковать в папку;
  5. Упаковать содержимое папки обратно в RAR архив.

Параллельно буду создавать файл с списком поврёждённых архивов (назову его CorruptedFiles.txt), чтобы знать над чем работать вручную. В папку с архивными файлами я положу необходимые для обработки файлы: Rar.exe, WinRAR.exe и созданный Books.url.

BAT файл для распаковки архивов

Сперва создам файл Extract.bat для тестирования и распаковки архивов:

nR
WinRAR t -ibck -inul "%%R" >> log.txt
If !ERRORLEVEL!==0 (
WinRAR x -ad -ibck "%%R" *.* >> log.txt
cd %%

nR
FOR %%F IN (*.rar,*.zip,*.7z) DO (
echo %%

nF
..\WinRAR t -ibck -inul "%%F" >> log.txt
If !ERRORLEVEL!==0 (
..\WinRAR x -ad -ibck "%%F" *.* "%%

nR.rar_bad" >> log.txt
)
)
cd ..
if exist "%%

nR\Books.url" >> log.txt
if exist "%%

nR" copy "Books.url" "%%

Упаковываем папки с информацией в архивы

Теперь напишу файл Pack.bat для упаковки папок в архивы WinRAR 5:

BAT файл для процесса перепаковки

В итоге, объединив эти два файла, получаю один файл RePack.bat :

nR
WinRAR t -ibck -inul "%%R" >> log.txt
If !ERRORLEVEL!==0 (
WinRAR x -ad -ibck "%%R" *.* >> log.txt
cd %%

nR
FOR %%F IN (*.rar,*.zip,*.7z) DO (
echo %%

nF
..\WinRAR t -ibck -inul "%%F" >> log.txt
If !ERRORLEVEL!==0 (
..\WinRAR x -ad -ibck "%%F" *.* "%%

nR.rar_bad" >> log.txt
)
)
cd ..
if exist "%%

nR\Books.url" >> log.txt
if exist "%%

nR" copy "Books.url" "%%

Всё, помещаем в одну папку все наши файлы архивов. Туда же копируем Rar.exe, WinRAR.exe, Books.url и созданный RePack.bat. Запускаем RePack.bat и наблюдаем процесс перепаковки.

Примечание: Для успешного завершения процесса перепаковки необходимо убедиться в наличии свободного места на диске! :)

По окончании процесса просматриваем файл CorruptedFiles.txt на предмет повреждённых архивов.

День второй. Оптимизация BAT файла для перепаковки архивов

Ещё вчера, когда я начал применять в действии файл перепаковки RePack.bat, я заметил, что приходится очень долго ждать. Сразу заметил, что я выполняю лишнии операции: тестирую архив, потом его распаковываю, произвожу такие двойные операции со всеми архивами и получаю в итоге множество папок с данными, которые потом упаковываю в новые архивы. Согласитесь, не очень оптимальное решение. Лучшим вариантом было бы сразу без тестирования архивов их распаковывать, а в случае ошибки - пропускать. И второе, надо бы, для экономии места на диске, распакованный архив сразу же запаковывать обратно, тем самым не держать на диске всю информацию из тысяч папок. Получается, что надо распаковать архив в папку и тут же, если не было ошибок, запаковать обратно эту папку в архив. Итак, что же у меня получилось после оптимизации BAT файла перепаковки архивов:

nR - Decompress
WinRAR x -ad -ibck -inul "%%R" *.* >> log.txt
If !ERRORLEVEL!==0 (
cd %%

nR
FOR %%F IN (*.rar,*.zip,*.7z) DO (
echo %%

nF
..\WinRAR x -ad -ibck -inul "%%F" *.* "%%

pF\" >> ..\log.txt
If !ERRORLEVEL!==0 (
if exist "%%F" del "%%F" >> ..\log.txt
) ELSE (
SET MyError=2
echo %%R\%%F [Error = !ERRORLEVEL!] >> ..\CorruptedFiles.txt
echo %%R\%%F - Error in file
)
)
cd ..
if exist "%%

nR\Books.url" >> log.txt
if exist "%%

nR" copy "Books.url" "%%

nR\Books.url" >> log.txt
) ELSE (
SET MyError=1
echo %%R [Error = !ERRORLEVEL!] >> CorruptedFiles.txt
echo %%R - Error in file
)
If !MyError!==0 (
if exist "%%R" del "%%R" >> log.txt
echo %%

nR - Compress
winrar a -y -r -ep1 -inul -ibck -ri1 -s -m5 -ma5 -md32MB "%%R" "%%

nR\" >> log.txt
if exist "%%

nR" >> log.txt
) ELSE (
echo MyError = !MyError!
if exist "%%

nR.rar_bad" >> log.txt
if exist "%%

День третий. Дальнейшая оптимизация BAT файла для перепаковки архивов

По результатам второго дня написания командного файла для перепаковки архивов была выявлена такая особенность архиватора WinRAR: все файлы архивов с книгами (текстовые файлы TXT, PDF, FB2 и т.д.) упакованные в формате WinRAR 5 имели чуть меньшую степень сжатия - архивы были больше в объеме. Нехорошо, подумал я и начал искать причину. Причина была найдена. Оказывается, что предыдущие версии WinRAR 4.xx имели возможность указать принудительно в параметрах -mc<par> специальные параметры сжатия для текстовых и аудио файлов. В документации к WinRAR написано следующее: "Сжатие текста позволяет улучшить коэффициент сжатия для простых текстовых данных, но его сжатие и скорость декомпрессия также как способность использовать несколько ядер процессоров гораздо хуже, чем в общем алгоритме сжатия. Таким образом, состояние по умолчанию для этой опции "отключено". Вы можете изменить его на "Auto", чтобы позволить WinRAR выбрать этот алгоритм автоматически для подходящих данных. "Force" применяет алгоритм сжатия текста ко всем данным, но будьте готовы к замедлению архивирования и извлечения при использовании этой опции."

Вот и получается, что мелкие текстовые файлы лучше сжимаются в формате WinRAR 4 с параметрами: -md4M -mc12:128t, но при этом будет хуже скорость упаковки, однако результирующий файл архива будет меньше по объёму.

В конечном итоге я решил, что буду определять объём старого архива и принимать решение с какими параметрами упаковывать самые маленькие файлы (до 1MB), средние файлы (от 1 до 5MB) или большие файлы (более 5MB). Cамые маленькие файлы упаковываю с параметрами: -m5 -ma4 -md1M -mc4:64t, средние файлы упаковываю с параметрами: -m5 -ma4 -md4M -mc12:128t и большие файлы -m5 -ma5 -md32M

Итак, на третий день у меня получилась следующая оптимизация BAT файла для перепаковки архивов:

nR - Decompress file
WinRAR x -ad -ibck -inul "%%R" *.*
If !ERRORLEVEL!==0 (
cd %%

nR
FOR %%F IN (*.rar,*.zip,*.7z) DO (
echo %%

nF
..\WinRAR x -ad -ibck -inul "%%F" *.* "%%

nR\Books.url"
if exist "%%

nR" copy "Books.url" "%%

zR LEQ 1000000 (
set ArchParam=-m5 -ma4 -md1M -mc4:64t
)
if %%

zR GTR 1000000 (
if %%

zR LEQ 5000000 (
set ArchParam=-m5 -ma4 -md4M -mc12:128t
)
)
if %%

zR GTR 5000000 (
set ArchParam=-m5 -ma5 -md32M
)
if exist "%%R" del "%%R"
echo %%

nR - Compress file
winrar a -y -r -ep1 -inul -ibck -ri1 -s !ArchParam! "%%R" "%%

SSH (eng. secure shell – безопасная оболочка) – консоль сервера, набор программ, позволяющих регистрироваться на компьютере по сети, удаленно выполнять различные команды, редактировать, копировать и перемещать файлы и каталоги.

Предисловие, благодарности

Пользуясь случаем, необходимо поблагодарить всех, принимавших участие в совершенствовании компьютера, операционных систем, Putty, 7-Zip и WinRAR. Возможно, эта заметка кому-то пригодится, в том числе и ее автору, причем раньше, чем он себе представляет. Если Вы никогда не занимались переносом сайтов с одного хостинга на другой, архивированием и восстановлением файлов на сервере или Вы – один из наших клиентов, которым нет необходимости в это вникать, почитайте лучше это или посмотрите это.

КэпВеб. Мы работаем, чтобы Вы отдыхали.

Сотни моих файлов превратились в архивы. Что делать?

Сотни моих файлов превратились в архивы. Что делать?

Произойти это может по разным причинам. К примеру, для архивирования файлов на хостинге masterhost отлично подходит команда

На другом хостинге эта команда может заархивировать каждый файл с уничтожением исходного, в результате сайт превращается в кучу архивов *.gz в подкаталогах.

На этот случай есть такой вариант разархивирования всех файлов:

Если это не работает (иногда шелл, например, не распознает команду unzip), есть более универсальный способ с использованием Windows, WinRAR.

  1. Перекачиваем все файлы, можно их предварительно упаковать в один архивный файл.
  2. В папку с архивами бросаем и запускаем "батник" 1.bat с таким содержанием:

@echo OFF REM Extract the content of all archive files in the current directory for %%f in (*.tgz;*.tar.gz;*.gz;*.zip) do "C:\Program Files\WinRAR\WinRAR.exe" x "%%f" REM Perform the same in all sub-directories for /D %%d in (*) do cd %%d && call %0 && cd..

При этом предполагается, что исполнимый файл WinRAR находится в папке C:\Program Files\WinRAR\

При необходимости расширения искомых архивов можно отредактировать, в данном случае ищем *.tgz;*.tar.gz;*.gz;*.zip

Можно добавить rar, если Вы являетесь счастливым обладателем папок с такими архивными файлами.

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

Читайте также: