Як розпакувати файл за допомогою командного рядка? [зачинено]


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. Честь, де належить честь.
— ЛосМанос

1
unzip [ім'я файлу] .zip
— Amranur Rahman

Відповіді:


53

Ви можете використовувати:

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

або

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

Безкоштовний байт- поштовий індекс: http://www.freebyte.com/fbzip/

або infozip: http://infozip.sourceforge.net/


11
Перша перелічена URL-адреса є справжньою 16-бітною програмою, тому вона не працює в операційних системах x64. Просто голови вгору.
— Марк Хендерсон

38
якщо ви перебуваєте в ОС Windows 7 або 10 з повноцінними можливостями, ви можете використовувати: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

Повний набір опцій для інструменту фляги доступного тут .

Приклади:

Extract jar file
    jar x[v]f jarfile [inputfiles] [-Joption] 
    jar x[v] [inputfiles] [-Joption]

37
Підказка. Вам потрібен JDK, а не лише JRE, якщо ви хочете використовувати банку.
— Qben

1
це дивно, m jar фактично вирішує проблему частково, тому що вона здатна перераховувати файли всередині архіву та витягувати вказані файли, однак вилучити всі файли одночасно неможливо ... досить дивно
— mikus

@mikus: чому б ні, просто скористайтеся командою <code> jar.exe xvf Compression.zip </code>
— Xinus

1
java.io.FileNotFoundException: test.zip (Система не може знайти вказаний файл)
— markj

Чи є спосіб вказати папку призначення? (наприклад, коли ви обираєте варіант екстракту до)?
— Леонардо Алвеш Мачадо

41

По-перше, напишіть утиліту unzip, використовуючи 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

1
якщо витягнутий вміст уже існує, і ви хочете змінити існуючий вміст, не вимагаючи, використовуйте "7z.exe x -y myarchive.zip"
— Suketu Bhuta,

22

Як нагадали інші, 7-блискавка чудова.

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

Мій внесок:

Отримати

Версія 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 є рекурсивним. Зазвичай те, що потрібно з функцією zip.

a - це "архів". Це ім'я вихідного zip-файлу.

-p - для пароля (необов’язково)

-w - це вихідний каталог. Це дозволить правильно вкласти файли у zip-файл, без додаткової інформації про папки.

-mem - сила шифрування.

Є й інші. Але вищесказане змусить вас бігти.

ПРИМІТКА. Додавання пароля зробить поштовий файл непривітним, коли справа стосується перегляду файлу через Провідник Windows. Клієнту може знадобитися власна копія 7-zip (або winzip чи інша) для перегляду вмісту файлу.

EDIT ::::::::::: :( просто додаткові речі).

Існує версія "командного рядка", яка, мабуть, краще підходить для цього: 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

В якості альтернативи аргументу "е" є аргумент 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


11

Дякую Річ, я це зазначу. Тож ось сценарій мого власного рішення. Він не вимагає розкручування інструментів сторонніх розробників.

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

Ось сценарій, який потрібно додати до початку ...

REM Зміна робочої папки назад у поточний каталог для сумісності Vista та 7
% ~ d0
CD% ~ dp0
Папка REM змінена

REM-файли цього сценарію.

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Розпакуйте сценарій файлу
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Це безлад, я знаю !!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Встановити ArgObj = WScript. Аргументи
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Потім
    >> j_unzip.vbs ECHO. var1 = ArgObj (0)
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. var1 = ""
    >> j_unzip.vbs ECHO Кінець, якщо
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Якщо var1 = "", то
    >> j_unzip.vbs ECHO. strFileZIP = "example.zip"
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. strFileZIP = var1
    >> j_unzip.vbs ECHO Кінець, якщо
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Розташування zip-файлу.
    >> j_unzip.vbs ECHO REM Встановити 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 ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Вилучення файлу" ^ & strFileZIP)
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Встановити 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 ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Витягнуто.")
    >> j_unzip.vbs ECHO.

2
красиво :) Я використовую це для завантаження командного рядка 7zip (чий виконуваний файл застебнутий (як це не дивно))
— Себастьян

Це працює, як очікувалося, тепер я можу завантажувати будь-яку папку та робити exe, використовуючи iexpress та unzip, використовуючи це. Це працює і в Windows 10.
— Кіран Кумар

9

Тут ви знайдете статтю про потрапляння до вбудованого Windows .ZIP-файлу, який обробляє VBscript:

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

(Останній розмиття коду стосується видобутку)


Це непросто, але, здається, це дуже вдале рішення, використовуючи лише функціональну папку Windows zip. Я щось таке шукав деякий час. Дякую!
— Андре Стінвелд

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 / тощо. (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.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.