Как распаковать файл с помощью командной строки? [закрыто]

164

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

Крис Сэйнти
источник
1
Быстрый поиск Google обнаружил это . Это работает в Windows (неясно, имеете ли вы в виду, что вы используете Windows, или ОС на самом деле DOS).
Джереми
26
Если вы не используете действительно старую версию Windows (ME или более раннюю), командная строка Windows не DOS. :)
Тайлер МакГенри
Самый простой способ распаковать файл - использовать unzip.exe. Пример: unzip.exe source.zip -d target_dir. URL: stahlworks.com/dev/index.php?tool=zipunzip
zappee
2
Windows с Powershell5 может делать это изначально с Exand-Archiveи Compress-Archive. Честь там, где честь.
LosManos
1
распаковать [имя файла] .zip
Амранур Рахман

Ответы:

53

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

http://membrane.com/synapse/library/pkunzip.html

или

7zip: http://www.7-zip.org/download.html

Бесплатный байт zip: http://www.freebyte.com/fbzip/

или infozip: http://infozip.sourceforge.net/

Red33mer
источник
11
Первый указанный URL-адрес является настоящим 16-разрядным приложением, поэтому не работает в операционных системах x64. Просто один на один.
Марк Хендерсон
38
если у вас Windows 7 или 10 с powershell, вы можете использовать:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_
@AK_ как насчет Windows 8 или 8.1?
Фрэнк Вю
2
@AK_ ты должен сделать это своим собственным ответом.
BrainStone
221

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

jar xf test.zip

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

C:\Java\jdk1.6.0_03\bin>jar xf test.zip

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

Примеры:

Extract jar file
    jar x[v]f jarfile [inputfiles] [-Joption] 
    jar x[v] [inputfiles] [-Joption]
Брайан
источник
37
Намек. Вам нужен JDK, а не только JRE, если вы хотите использовать jar.
Qben
1
это странно, m jar на самом деле частично решает проблему, потому что он в состоянии перечислить файлы внутри архива и извлечь указанные файлы, однако, невозможно извлечь все файлы одновременно ... довольно странно
mikus
@mikus: почему бы и нет, просто используйте команду <code> jar.exe xvf Compressed.zip </ code>
Xinus
1
java.io.FileNotFoundException: test.zip (система не может найти указанный файл)
markj
Есть ли способ указать папку назначения? (например, когда вы выбираете параметр extract-to)?
Леонардо Алвес Мачадо
41

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

Я разместил пример в своем блоге о том, как разархивировать файл с помощью командного файла :

' j_unzip.vbs
'
' UnZip a file script
'
' By Justin Godden 2010
'
' It's a mess, I know!!!
'

' Dim ArgObj, var1, var2
Set ArgObj = WScript.Arguments

If (Wscript.Arguments.Count > 0) Then
 var1 = ArgObj(0)
Else
 var1 = ""
End if

If var1 = "" then
 strFileZIP = "example.zip"
Else
 strFileZIP = var1
End if

'The location of the zip file.
REM Set WshShell = CreateObject("Wscript.Shell")
REM CurDir = WshShell.ExpandEnvironmentStrings("%%cd%%")
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
strZipFile = sCurPath & "\" & strFileZIP
'The folder the contents should be extracted to.
outFolder = sCurPath & "\"

 WScript.Echo ( "Extracting file " & strFileZIP)

Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions

 WScript.Echo ( "Extracted." )

' This bit is for testing purposes
REM Dim MyVar
REM MyVar = MsgBox ( strZipFile, 65, "MsgBox Example"

Используйте это так:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip
Джастин Годден
источник
3
Обычно считается хорошим добавить код в свой ответ, и вообще плохой - ссылаться на него - просто на голову!
Рич Брэдшоу
39

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

7z.exe x myarchive.zip
ninesided
источник
1
Если извлекаемые содержание уже существует, и вы хотите заменить существующее содержимое без запроса, а затем использовать «7z.exe х -y myarchive.zip»
Suketu Бхута
22

Как уже упоминалось, 7-Zip это здорово.

Примечание: я собираюсь заархивировать, а затем распаковать файл. Распакуйте внизу.

Мой вклад:

Получить

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

Текущий URL

http://www.7-zip.org/download.html

Синтаксис?

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

"C:\Program Files\7-Zip\7z.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256

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

-r является рекурсивным. Обычно то, что вы хотите с функциональностью почтового индекса.

А для "архива". Это имя выходного почтового файла.

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

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

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

Есть и другие. Но вышесказанное заставит вас бежать.

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

РЕДАКТИРОВАТЬ ::::::::::: :( просто дополнительные вещи).

Существует версия «командной строки», которая, вероятно, лучше подходит для этого: http://www.7-zip.org/download.html

(текущая (на момент написания) прямая ссылка) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

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

"C:\WhereIUnzippedCommandLineStuff\7za.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256

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

"C:\WhereIUnzippedCommandLineStuff\7zipCommandLine\7za.exe" e MySuperCoolZipFile.zip "*.*" -oC:\SomeOtherFolder\MyUnzippedFolder -pmypassword -y -r

В качестве альтернативы аргументу «e» есть аргумент ax.

  e: Extract files from archive (without using directory names)
  x: eXtract files with full paths

Документация здесь:

http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm

granadaCoder
источник
11

Спасибо Рич, я приму это к сведению. Итак, вот сценарий для моего собственного решения. Не требует никаких сторонних инструментов для распаковки.

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

Вот скрипт для добавления в топ ...

REM Изменение рабочей папки обратно в текущий каталог для совместимости с Vista & 7
% ~ D0
CD% ~ dp0
Папка REM изменена

REM Этот скрипт upzip файлы ...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Разархивировать файл-скрипт
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ЭХО 'Это беспорядок, я знаю !!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ЭХО.
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Set ArgObj = WScript.Arguments
    >> j_unzip.vbs ЭХО.
    >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Тогда
    >> j_unzip.vbs ЭХО. var1 = ArgObj (0)
    >> j_unzip.vbs ECHO остальное
    >> j_unzip.vbs ЭХО. var1 = ""
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ЭХО.
    >> j_unzip.vbs ECHO Если var1 = "", то
    >> j_unzip.vbs ЭХО. strFileZIP = "example.zip"
    >> j_unzip.vbs ECHO остальное
    >> j_unzip.vbs ЭХО. strFileZIP = var1
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ЭХО.
    >> j_unzip.vbs ECHO 'Расположение zip-файла.
    >> j_unzip.vbs ECHO REM Set WshShell = CreateObject ("Wscript.Shell")
    >> j_unzip.vbs ECHO REM CurDir = WshShell.ExpandEnvironmentStrings ("%% cd %%")
    >> j_unzip.vbs ECHO Dim sCurPath
    >> j_unzip.vbs ECHO sCurPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (".")
    >> j_unzip.vbs ECHO strZipFile = sCurPath ^ & "\" ^ & strFileZIP
    >> j_unzip.vbs ECHO 'Папка, в которую следует извлечь содержимое.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\"
    >> j_unzip.vbs ЭХО.
    >> j_unzip.vbs ЭХО. WScript.Echo («Извлечение файла» ^ & strFileZIP)
    >> j_unzip.vbs ЭХО.
    >> j_unzip.vbs ECHO Set objShell = CreateObject ("Shell.Application")
    >> j_unzip.vbs ECHO Установить objSource = objShell.NameSpace (strZipFile) .Items ()
    >> j_unzip.vbs ECHO Установить objTarget = objShell.NameSpace (outFolder)
    >> j_unzip.vbs ECHO intOptions = 256
    >> j_unzip.vbs ECHO objTarget.CopyHere objSource, intOptions
    >> j_unzip.vbs ЭХО.
    >> j_unzip.vbs ЭХО. WScript.Echo («Извлечено».)
    >> j_unzip.vbs ЭХО.
Джастин Годден
источник
2
красивый :) Я использую это, чтобы загрузить командную строку 7zip (чей исполняемый файл застегнут (как странно))
Себастьян
Это работает, как и ожидалось, теперь я могу заархивировать любую папку и сделать EXE с помощью iexpress и разархивировать с помощью этого. Это работает в Windows 10 тоже.
Киран Кумар
9

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

https://www.aspfree.com/c/a/Windows-Scripting/Compressed-Folders-in-WSH/

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

Джон Бейли
источник
Это не легко, но это, кажется, очень хорошее решение, использующее только встроенную функциональность zip-папки Windows. Я давно что-то искал это. Спасибо!
Андре Стинвелд
5

Первоначально ZIP-файлы создавались с помощью программного обеспечения командной строки MS-DOS от PKWare, двумя программами были PKZIP.EXE и PKUNZIP.EXE. Я думаю, что вы все еще можете скачать PKUNZIP на сайте PKWare здесь:

http://www.pkware.com/software-pkzip/dos-compression

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

C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\
Михель
источник
1
Это старая школа!
granadaCoder
3

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

Info-ZIP поддерживает аппаратные средства от микрокомпьютеров вплоть до суперкомпьютеров Cray, работающих практически на всех версиях Unix, VMS, OS / 2, Windows 9x / NT / и т. Д. (он же Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, ОС Acorn RISC, 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.

гимель
источник
1

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

@ECHO OFF
SET winzip_path="C:\Program Files\WinZip"
SET source_path="C:\Test"
SET output_path="C:\Output\"
SET log_file="C:\Test\unzip_log.txt"
SET file_name="*.zip"

cd %source_path%
echo Executing for %source_path% > %log_file%

FOR /f "tokens=*" %%G IN ('dir %file_name% /b') DO (
echo Processing : %%G
echo File_Name : %%G >> %log_file%
%winzip_path%\WINZIP32.EXE -e %%G %output_path%
)

PAUSE
Сандип Гааде
источник