วิธีการแตกไฟล์โดยใช้บรรทัดคำสั่ง? [ปิด]


164

คำสั่งใดบ้างที่สามารถใช้ผ่านบรรทัดคำสั่งเพื่อคลายซิปไฟล์
โดยเฉพาะอย่างยิ่งสิ่งที่มีอยู่ใน Windows หรือเครื่องมือโอเพนซอร์ส / ฟรี


1
ค้นหา Google อย่างรวดเร็วเปิดขึ้นนี้ ใช้งานได้กับ windows (ไม่ชัดเจนว่าคุณหมายถึงว่าคุณใช้ Windows หรือ OS เป็น DOS จริง ๆ )
Jeremy

26
ยกเว้นว่าคุณใช้ Windows รุ่นเก่าจริง ๆ (ME หรือเก่ากว่า) บรรทัดคำสั่ง windows ไม่ใช่ DOS :)
Tyler McHenry

วิธีที่ง่ายที่สุดในการคลายไฟล์คือการใช้ 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
unzip [filename] .zip
Amranur Rahman

คำตอบ:


53

11
URL แรกที่แสดงเป็นแอพพลิเคชั่น 16- บิตจริงดังนั้นจึงไม่สามารถใช้งานได้กับระบบปฏิบัติการ x64 แค่หัวขึ้น
Mark Henderson

38
หากคุณใช้ Windows 7 หรือ 10 พร้อมด้วย PowerShell คุณสามารถใช้:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_

@AK_ แล้ว Windows 8 หรือ 8.1 ล่ะ?
Frank Vu

2
@AK_ คุณควรตอบมันเอง
BrainStone

221

หากคุณมีจาวาบนพีซีของคุณอยู่แล้วและไดเรกทอรี 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 หากคุณต้องการใช้ jar
Qben

1
มันแปลก, m jar แก้ปัญหาได้จริงบางส่วน, ทำให้มันสามารถแสดงรายการไฟล์ภายในไฟล์เก็บถาวรและแตกไฟล์ที่ระบุอย่างไรก็ตามมันเป็นไปไม่ได้ที่จะแตกไฟล์ทั้งหมดในเวลาเดียวกัน ... pretty weird
mikus

@mikus: ทำไมไม่ลองใช้คำสั่ง <code> jar.exe xvf Compressed.zip </code>
Xinus

1
java.io.FileNotFoundException: test.zip (ระบบไม่สามารถหาไฟล์ที่ระบุ)
markj

มีวิธีการระบุโฟลเดอร์ปลายทางหรือไม่? (เหมือนเมื่อคุณเลือกตัวเลือกดึงข้อมูล)
Leonardo Alves Machado

41

ประการแรกเขียนยูทิลิตี unzip โดยใช้ vbscript เพื่อทริกเกอร์การทำงานของ unzip ดั้งเดิมใน 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
โดยทั่วไปถือว่าเป็นการดีที่จะใส่รหัสลงในคำตอบของคุณและโดยทั่วไปจะไม่ดีในการเชื่อมโยงโค้ด
Rich Bradshaw

39

7-Zipมันเป็นโอเพ่นซอร์สฟรีและรองรับหลากหลายรูปแบบ

7z.exe x myarchive.zip

1
หากมีเนื้อหาที่แยกอยู่แล้วและคุณต้องการแทนที่เนื้อหาที่มีอยู่โดยไม่ได้รับแจ้งให้ใช้ "7z.exe x -y myarchive.zip"
Suketu Bhuta

22

อย่างที่คนอื่นพูดพาดพิง 7-zip นั้นยอดเยี่ยม

หมายเหตุ: ฉันกำลังจะ zip แล้วคลายซิปไฟล์ Unzip อยู่ที่ด้านล่าง

ผลงานของฉัน:

รับ

เวอร์ชั่นบรรทัดคำสั่ง 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 คือความแรงของการเข้ารหัส

มีคนอื่น ๆ แต่ข้างต้นจะช่วยให้คุณทำงานได้

หมายเหตุ: การเพิ่มรหัสผ่านจะทำให้ไฟล์ zip ไม่เป็นมิตรเมื่อมาถึงการดูไฟล์ผ่าน Windows Explorer ลูกค้าอาจต้องการสำเนาของตนเอง 7-zip (หรือ winzip หรืออื่น ๆ ) เพื่อดูเนื้อหาของไฟล์

แก้ไข :::::::::::::( สิ่งเพิ่มเติมพิเศษ)

มีเวอร์ชัน "command line" ซึ่งน่าจะเหมาะสมกว่าสำหรับเรื่องนี้: http://www.7-zip.org/download.html

ลิงค์ปัจจุบัน (ณ เวลาที่เขียน) ลิงก์โดยตรง http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

ดังนั้นคำสั่ง zipจะเป็น (ด้วยเวอร์ชันบรรทัดคำสั่งของเครื่องมือ zip 7)

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

ตอนนี้ส่วน unzip : (เพื่อ unzip ไฟล์ที่คุณเพิ่งสร้างขึ้น)

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

เป็นทางเลือกแทนอาร์กิวเมนต์ "e" มีอาร์กิวเมนต์ขวาน

  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 ไฟล์สคริปต์ของ upzip นี้ ...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'UnZip สคริปต์ไฟล์
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs เอคโค 'มันเป็นเรื่องยุ่งฉันรู้ !!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ตั้งค่า ECHO ArgObj = WScript.Arguments
    >> j_unzip.vbs ECHO
    >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) จากนั้น
    >> j_unzip.vbs ECHO var1 = ArgObj (0)
    >> j_unzip.vbs ECHO อื่น ๆ
    >> 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 อื่น ๆ
    >> 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.End EnvironmentStrings ("%% 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 (ซึ่งปฏิบัติการได้ถูกบีบอัด (แปลกมาก))
เซบาสเตียน

นี่ใช้งานได้ตามที่คาดไว้ตอนนี้ฉันสามารถ zip โฟลเดอร์ใด ๆ และสร้าง exe โดยใช้ iexpress และ unzip โดยใช้สิ่งนี้ ทำงานใน windows 10 ด้วยหรือไม่
Kiran Kumar

9

มีบทความเกี่ยวกับการเดินทางไปยัง Windows .ZIP การจัดการไฟล์ด้วย VBscript ที่นี่:

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

(รหัสสุดท้ายประกาศแจ้งข้อเสนอด้วยการแยก)


มันไม่ง่ายเลย แต่นี่น่าจะเป็นทางออกที่ดีมาก ๆ ที่ใช้ฟังก์ชั่นการบีบอัดไฟล์ซิปของ windows ดั้งเดิม ฉันได้รับการมองหาบางสิ่งบางอย่างในขณะนี้ ขอบคุณ!
Andre Steenveld

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 รองรับฮาร์ดแวร์จากไมโครคอมพิวเตอร์จนถึงซูเปอร์คอมพิวเตอร์ Cray ทำงานบน Unix, VMS, OS / 2, Windows 9x / NT / etc เกือบทุกรุ่น (aka Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, อาตาริ 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 NLMs ไลบรารีที่ใช้ร่วมกัน (DLLs) มีให้บริการสำหรับ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.