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.