Jak rozpakować plik za pomocą wiersza poleceń? [Zamknięte]


164

Których poleceń można użyć w wierszu poleceń, aby rozpakować plik?
Najlepiej coś wbudowanego w Windows lub open source / darmowe narzędzia.


1
Szybkie wyszukiwanie w Google pokazało to . To działa w systemie Windows (nie jest jasne, czy masz na myśli system Windows, czy też system operacyjny to DOS).
Jeremy

26
Jeśli nie używasz naprawdę starej wersji systemu Windows (ME lub starszej), wiersz poleceń systemu Windows nie jest DOS. :)
Tyler McHenry

Najłatwiejszym sposobem rozpakowania pliku jest użycie unzip.exe. Przykład: unzip.exe source.zip -d katalog_docelowy. URL: stahlworks.com/dev/index.php?tool=zipunzip
zappee

2
Windows z Powershell5 może to zrobić natywnie z Exand-Archivei Compress-Archive. Honor tam, gdzie należy się honor.
LosManos

1
unzip [nazwa pliku] .zip
Amranur Rahman

Odpowiedzi:


53

11
Pierwszy wymieniony adres URL to prawdziwa aplikacja 16-bitowa, dlatego nie działa w systemach operacyjnych x64. Tylko jedno ostrzeżenie.
Mark Henderson,

38
jeśli korzystasz z Windows 7 lub 10 z PowerShell, możesz użyć:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_

@AK_ a co z Windows 8 lub 8.1?
Frank Vu,

2
@AK_ powinieneś uczynić to własną odpowiedzią.
BrainStone

221

Jeśli masz już Javę na swoim komputerze, a katalog bin znajduje się w Twojej ścieżce (w większości przypadków), możesz użyć wiersza poleceń:

jar xf test.zip

lub jeśli nie na twojej drodze:

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

Pełny zestaw opcji narzędzia jar dostępny tutaj .

Przykłady:

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

37
Wskazówka. Jeśli chcesz używać jar, potrzebujesz JDK, a nie tylko środowiska JRE.
Qben

1
to dziwne, m jar faktycznie rozwiązuje problem częściowo, ponieważ jest w stanie wyświetlić listę plików w archiwum i wypakować określone pliki, jednak nie można wypakować wszystkich plików naraz ... dość dziwne
mikus

@mikus: dlaczego nie, po prostu użyj polecenia <code> jar.exe xvf Compressed.zip </code>
Xinus

1
java.io.FileNotFoundException: test.zip (system nie może znaleźć określonego pliku)
markj

Czy istnieje sposób na określenie folderu docelowego? (np. gdy wybierasz opcję wyodrębniania do)?
Leonardo Alves Machado

41

Po pierwsze, napisz narzędzie do rozpakowywania za pomocą vbscript, aby uruchomić natywną funkcję rozpakowywania w systemie Windows. Następnie wypuść skrypt z pliku wsadowego i wywołaj go. Wtedy jest tak dobre, jak samodzielne. Robiłem to w przeszłości dla wielu zadań. W ten sposób nie wymaga aplikacji innych firm, wystarczy jeden plik wsadowy, który robi wszystko.

Na swoim blogu umieściłem przykład, jak rozpakować plik za pomocą pliku wsadowego :

' 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"

Użyj tego w ten sposób:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip

3
Ogólnie uważa się, że umieszczenie kodu w odpowiedzi jest dobre, a linkowanie do kodu jest ogólnie złe - tylko uwaga!
Rich Bradshaw

39

7-Zip , jest open source, darmowy i obsługuje szeroką gamę formatów.

7z.exe x myarchive.zip

1
jeśli wyodrębniona zawartość już istnieje i chcesz zastąpić istniejącą zawartość bez pytania, użyj „7z.exe x -y
myarchive.zip

22

Jak wspominali inni, zamek 7-suwakowy jest świetny.

Uwaga: mam zamiar spakować, a następnie rozpakować plik. Rozpakuj na dole.

Mój wkład:

Uzyskać

Wersja 7-Zip Command Line

Bieżący adres URL

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

Składnia?

Możesz umieścić następujące elementy w pliku .bat

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

Pokazałem kilka opcji.

-r jest rekurencyjny. Zwykle to, co chcesz z funkcją zip.

a oznacza „archiwum”. To nazwa wyjściowego pliku zip.

-p jest hasłem (opcjonalnie)

-w jest katalogiem źródłowym. Spowoduje to prawidłowe zagnieżdżenie plików w pliku zip, bez dodatkowych informacji o folderze.

-mem jest siłą szyfrowania.

Są inni. Ale powyższe sprawi, że będziesz biegać.

UWAGA: Dodanie hasła spowoduje, że plik zip będzie nieprzyjazny podczas przeglądania pliku w Eksploratorze Windows. Klient może potrzebować własnej kopii 7-zip (lub winzip lub innego), aby wyświetlić zawartość pliku.

EDYCJA ::::::::::: :( tylko dodatkowe rzeczy).

Istnieje wersja "wiersza poleceń", która prawdopodobnie lepiej się do tego nadaje: http://www.7-zip.org/download.html

(aktualny (w momencie pisania) bezpośredni link) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

Tak więc polecenie zip byłoby (z wersją wiersza poleceń narzędzia 7 zip).

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

Teraz część do rozpakowania: (aby rozpakować właśnie utworzony plik)

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

Alternatywą dla argumentu „e” jest argument ax.

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

Dokumentacja tutaj:

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


11

Dzięki Rich, zwrócę na to uwagę. Oto skrypt mojego własnego rozwiązania. Nie wymaga narzędzi do rozpakowywania innych firm.

Dołącz poniższy skrypt na początku pliku wsadowego, aby utworzyć funkcję, a następnie, aby wywołać funkcję, polecenie jest ... cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Oto skrypt, który należy dodać do góry ...

REM Zmiana folderu roboczego z powrotem na katalog bieżący w celu zapewnienia zgodności z Vista i 7
% ~ d0
CD% ~ dp0
Folder REM został zmieniony

REM Ten skrypt upzip's pliki ...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Rozpakuj plik skryptu
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'To bałagan, wiem !!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Ustaw ArgObj = WScript.Arguments
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Jeśli (Wscript.Arguments.Count ^> 0) Następnie
    >> j_unzip.vbs ECHO. var1 = ArgObj (0)
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. var1 = „”
    >> j_unzip.vbs ECHO Zakończ, jeśli
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Jeśli var1 = "" to
    >> j_unzip.vbs ECHO. strFileZIP = "example.zip"
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. strFileZIP = var1
    >> j_unzip.vbs ECHO Zakończ, jeśli
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Lokalizacja pliku zip.
    >> j_unzip.vbs ECHO REM Ustaw 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 'Folder, do którego zawartość powinna zostać wypakowana.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\"
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Wyodrębnianie pliku" ^ & strFileZIP)
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Ustaw objShell = CreateObject ("Shell.Application")
    >> j_unzip.vbs ECHO Ustaw objSource = objShell.NameSpace (strZipFile) .Items ()
    >> j_unzip.vbs ECHO Ustaw 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 („Wyodrębniono”)
    >> j_unzip.vbs ECHO.

2
piękny :) Używam tego do pobrania wiersza poleceń 7zip (którego plik wykonywalny jest spakowany (jak dziwne))
Sebastian

Działa to zgodnie z oczekiwaniami, teraz mogę spakować dowolny folder i utworzyć plik exe za pomocą iexpress i rozpakować za pomocą tego. Czy to działa również w systemie Windows 10.
Kiran Kumar


5

Pierwotnie pliki ZIP były tworzone za pomocą oprogramowania wiersza poleceń MS-DOS z PKWare, dwoma programami były PKZIP.EXE i PKUNZIP.EXE. Myślę, że nadal możesz pobrać PKUNZIP ze strony PKWare tutaj:

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

Rzeczywista linia poleceń może wyglądać mniej więcej tak:

C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\

1
To stara szkoła!
granadaCoder

3

Pobierz plik wykonywalny z info-zip .

Info-ZIP obsługuje sprzęt od mikrokomputerów po superkomputery Cray, działające na prawie wszystkich wersjach Unix, VMS, OS / 2, Windows 9x / NT / itp. (aka Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS / QDOS, MVS i OS / 390 OE, VM / CMS, FlexOS, Tandem NSK i Human68K (japoński). Dostępna jest również (stara) obsługa LynxOS, TOPS-20, AOS / VS i Novell NLM. Biblioteki współdzielone (DLL) są dostępne dla systemów Unix, OS / 2, Win32 i Win16, a interfejsy graficzne są dostępne dla systemów Win32, Win16, WinCE i Mac OS.


1

Skopiuj poniższy kod do pliku wsadowego i wykonaj. Poniższe wymaga zainstalowania / dostępu Winzip z twojego komputera. Zmieniaj zmienne zgodnie z potrzebami.

@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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.