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


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.