[Batch/CMD] Распаковка архивов WinRAR через консоль

Напиши консольную команду для распаковки файла.rar в папку C:\1, если архив под паролем 1234
Для распаковки файла.rar в папку C:\1 с паролем 1234 можно использовать следующую команду в командной строке Windows:

Код:
"C:\Program Files\WinRAR\WinRAR.exe" x -p1234 "C:\path\to\file.rar" "C:\1\"

Где:
  • "C:\Program Files\WinRAR\WinRAR.exe" - путь к исполняемому файлу WinRAR
  • x - команда для извлечения файлов из архива
  • -p1234 - опция для указания пароля (в данном случае пароль 1234)
  • "C:\path\to\file.rar" - путь к архиву, который нужно распаковать
  • "C:\1\" - путь к папке, в которую нужно распаковать файлы из архива.
 
Консольная команда для упаковки файла в zip-архив (без RAR)
Для упаковки файла в zip-архив в командной строке Windows можно использовать команду "7z". Если у вас установлена утилита 7-Zip, вы можете воспользоваться следующей командой:

Код:
7z a -tzip "C:\path\to\archive.zip" "C:\path\to\file"

Где:
  • 7z - имя исполняемого файла 7-Zip
  • a - команда для создания архива
  • -tzip - опция для указания типа архива (в данном случае zip)
  • "C:\path\to\archive.zip" - путь и имя для создаваемого архива
  • "C:\path\to\file" - путь к файлу, который нужно упаковать

Пожалуйста, убедитесь, что у вас установлена утилита 7-Zip и ее путь добавлен в переменную среды PATH.
 
Для упаковки файла в zip-архив в командной строке Windows можно использовать команду "7z". Если у вас установлена утилита 7-Zip, вы можете воспользоваться следующей командой:

Код:
7z a -tzip "C:\path\to\archive.zip" "C:\path\to\file"

Где:
  • 7z - имя исполняемого файла 7-Zip
  • a - команда для создания архива
  • -tzip - опция для указания типа архива (в данном случае zip)
  • "C:\path\to\archive.zip" - путь и имя для создаваемого архива
  • "C:\path\to\file" - путь к файлу, который нужно упаковать

Пожалуйста, убедитесь, что у вас установлена утилита 7-Zip и ее путь добавлен в переменную среды PATH.
7-zip єто системная утилита для виндовс?
 
7-zip єто системная утилита для виндовс?
Да, 7-Zip является системной утилитой для Windows. Она представляет собой свободно распространяемое программное обеспечение с открытым исходным кодом, которое позволяет создавать и распаковывать архивы различных форматов, в том числе zip, rar, 7z и другие. 7-Zip обладает высокой степенью сжатия, поддерживает множество алгоритмов сжатия и обладает простым в использовании интерфейсом командной строки.
 
@ChatGPT, 7z - сторонняя утилита, и не встроена в ОС.

@Сергій, если тебе чисто средствами винды, посмотри этот класс на VBS, или из той же темы на VB6. Там используется встроенная библиотека zipfldr.
 
@ChatGPT, 7z - сторонняя утилита, и не встроена в ОС.

@Сергій, если тебе чисто средствами винды, посмотри этот класс на VBS, или из той же темы на VB6. Там используется встроенная библиотека zipfldr.
Увьі, мой оператор мобильной связи блокирует доступ к єтому сайту (по ссьілке)
 
@Сергій, мой тоже, пользуйтесь VPN.

Продублировал код сюда (файл .vbs):
VB.NET / VBA:
Option Explicit
 
' ========= Пример архивирования папки ========
Dim Zip, ArcPath, FolderPath
' Где создаем архив
ArcPath      = "h:\_VBS, WSH\Архивация\My_Class\test.zip"
' Какую папку архивируем
FolderPath   = "h:\_VBS, WSH\Архивация\My_Class\ToArc"
 
Set Zip = New ZipClass
if (Zip.CreateArchive (ArcPath)) then ' старый архив затирается
    Zip.CopyFolderToArchive FolderPath
end if
msgbox "Папка " & FolderPath & " заархивирована."
 
 
' ========= Пример добавления файла в уже созданный архив ========
Dim FilePath
' Какой файл архивировать
FilePath     = "h:\_VBS, WSH\Архивация\My_Class\ZipClass.xls"
 
Zip.CopyFileToArchive FilePath
msgbox "Файл " & FilePath & " добавлен к архиву " & ArcPath
 
 
' ================== Распаковка архива ===================
Dim UnpackPath
' Путь, куда распаковуем
UnpackPath   = "h:\_VBS, WSH\Архивация\My_Class\Unpack"
 
Zip.UnpackArchive ArcPath, UnpackPath
msgbox "Архив распакован в папку: " & UnpackPath
 
' --------------------------------------------------------------------------------------
' Класс создания архивов ZIP. Maded by Dragokas
'
' - позволяет обходить ошибку при добавлении пустых папок
' - позволяет добавлять файлы с атрибутом "скрытый"
' - правильно рассчитывает задержку при распаковке в папку, где уже есть другие файлы
' --------------------------------------------------------------------------------------
Class ZipClass
        Private oShApp, oFSO, oArchive, ArcItemsNewCount, oFolderItems, oFolderItem, oArchiveItems, oTarget, oTargetItems, ZipHeader, isEmptyFolder, SHCONTF_FILES_AND_FOLDERS
        Private Sub Class_Initialize() 'Инициализация объектов
            'FolderItems3.Filter method ' [url]http://msdn.microsoft.com/en-us/library/windows/desktop/bb787787(v=vs.85).aspx[/url]
            Const SHCONTF_FOLDERS               = &H20
            Const SHCONTF_NONFOLDERS            = &H40
            Const SHCONTF_INCLUDEHIDDEN         = &H80
            Const SHCONTF_INCLUDESUPERHIDDEN    = &H10000 ' Windows 7 and Later
            SHCONTF_FILES_AND_FOLDERS = SHCONTF_FOLDERS Or SHCONTF_NONFOLDERS Or SHCONTF_INCLUDEHIDDEN Or SHCONTF_INCLUDESUPERHIDDEN
            Set oShApp = CreateObject("Shell.Application")
            set oFSO = CreateObject("Scripting.FileSystemObject")
        End Sub
        Function UnpackArchive(SourceArchive, DestPath) 'Распаковка архива
            Set oArchiveItems = oShApp.NameSpace(SourceArchive).Items
            on error resume next
            if not oFSO.FolderExists(DestPath) then oFSO.CreateFolder(DestPath)
            if Err.Number <> 0 then WScript.Echo("Не хватает прав для создания временной папки распаковки!"): UnpackArchive = false: Exit Function
            on error goto 0
            Set oTarget = oShApp.NameSpace(DestPath)
            set oTargetItems = oTarget.Items
            Dim oSCR: set oSCR = CreateObject("Scripting.Dictionary"): oSCR.CompareMode = 1
            for each oFolderItem in oTargetItems: oSCR.Add oFolderItem.Name, "": Next ' подсчет кол-ва уникальных файлов
            for each oFolderItem in oArchiveItems
                if not oSCR.Exists(oFolderItem.Name) then oSCR.Add oFolderItem.Name, ""
            Next
            'CopyHere option ENUM: [url]http://msdn.microsoft.com/en-us/library/windows/desktop/bb787866(v=vs.85).aspx[/url]
            oTarget.CopyHere oArchiveItems, 4+16 '(4 - no ProgressBar, 16 - Yes to all, 1024 - suppress all errors)
            Do: Wscript.Sleep 200: oTargetItems.Filter SHCONTF_FILES_AND_FOLDERS, "*": Loop Until oTargetItems.Count => oSCR.Count
            UnpackArchive = true: set oArchiveItems = Nothing: set oTarget = Nothing
        End Function
        Function CreateArchive(ZipArchivePath) 'Подготовка ZIP-архива
            If lcase(oFSO.GetExtensionName(ZipArchivePath)) <> "zip" Then WScript.Echo("Указано неверное расширение для архива!"): Exit Function
            ZipHeader = "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
            on error resume next
            with oFSO.OpenTextFile(ZipArchivePath, 2, True)
                if Err.Number <> 0 then WScript.Echo("Не хватает прав для создания архива!"): CreateArchive = False: Exit function
            .Write ZipHeader: .Close: end with
            on error goto 0
            Do: WScript.Sleep(100): Loop until oFSO.FileExists(ZipArchivePath): WScript.Sleep(200) 'выжидаем время, пока ZIP-архив не будет создан
            Set oArchive = oShApp.NameSpace(ZipArchivePath): if Not (oArchive is Nothing) Then CreateArchive = True
        End Function
        Function CopyFileToArchive(srcFilePath) 'Копируем файл в ZIP-архив
            ArcItemsNewCount = oArchive.Items.Count + 1
            Dim srcFileName: srcFileName = oFSO.GetBaseName(srcFilePath)
            for each oFolderItem in oArchive.Items ' Проверяем, существует ли уже такой файл в архиве
                if strcomp(oFolderItem.name, srcFileName) = 0 then ArcItemsNewCount = oArchive.Items.Count - 1: exit for
            next
            oArchive.CopyHere srcFilePath ', 4 + 16 + 1024 'these options works only with unzipped folder
            Do: Wscript.Sleep 200: Loop Until oArchive.Items.Count => ArcItemsNewCount 'Выжидаем пока кол-во объектов в ZIP-архиве станет >= копируемым в него
        End Function
        Function CopyFolderToArchive(srcFolderPath) 'Копируем содержимое папки в ZIP-архив
            Dim sFilter: set oFolderItems = oShApp.NameSpace(srcFolderPath).Items
            oFolderItems.Filter SHCONTF_FILES_AND_FOLDERS, "*" 'включаем в архив скрытые файлы
            For each oFolderItem in oFolderItems ' поиск пустых папок
                isEmptyFolder = false
                if oFolderItem.IsFolder then if oFolderItem.GetFolder.Items.Count = 0 then isEmptyFolder = true
                if not isEmptyFolder then sFilter = sFilter & ";" & replace(oFolderItem.Name, ";", "?") ' белый список объектов для фильтра
            Next
            oFolderItems.Filter SHCONTF_FILES_AND_FOLDERS, mid(sFilter, 1)
            ArcItemsNewCount = oArchive.Items.Count + oFolderItems.Count
            oArchive.CopyHere oFolderItems
            Do: Wscript.Sleep 200: Loop Until oArchive.Items.Count => ArcItemsNewCount 'Выжидаем пока кол-во объектов в ZIP-архиве станет >= копируемым в него
        End Function
End Class
 
Назад
Сверху Снизу