Những lệnh nào có thể được sử dụng thông qua dòng lệnh để giải nén một tập tin?
Tốt nhất là một cái gì đó được tích hợp trong Windows hoặc các công cụ mã nguồn mở / miễn phí.
Exand-Archive
và Compress-Archive
. Danh dự nơi danh dự là do.
Những lệnh nào có thể được sử dụng thông qua dòng lệnh để giải nén một tập tin?
Tốt nhất là một cái gì đó được tích hợp trong Windows hoặc các công cụ mã nguồn mở / miễn phí.
Exand-Archive
và Compress-Archive
. Danh dự nơi danh dự là do.
Câu trả lời:
Bạn đã có thể sử dụng :
http://membrane.com/synapse/l Library / pkunzip.html
hoặc là
7zip: http://www.7-zip.org/doad.html
Mã byte miễn phí : http://www.freebyte.com/fbzip/
hoặc thông tin: http://infozip.sourceforge.net/
powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
Nếu bạn đã có java trên PC và thư mục bin nằm trong đường dẫn của bạn (trong hầu hết các trường hợp), bạn có thể sử dụng dòng lệnh:
jar xf test.zip
hoặc nếu không trong đường dẫn của bạn:
C:\Java\jdk1.6.0_03\bin>jar xf test.zip
Toàn bộ các tùy chọn cho công cụ jar có sẵn ở đây .
Ví dụ:
Extract jar file
jar x[v]f jarfile [inputfiles] [-Joption]
jar x[v] [inputfiles] [-Joption]
Đầu tiên, hãy viết một tiện ích giải nén bằng vbscript để kích hoạt chức năng giải nén riêng trong Windows. Sau đó bỏ đoạn script từ trong tệp bó của bạn và sau đó gọi nó. Sau đó, nó tốt như đứng một mình. Tôi đã làm nó trong quá khứ cho nhiều nhiệm vụ. Bằng cách này, nó không yêu cầu các ứng dụng của bên thứ ba, chỉ cần một tệp bó thực hiện mọi thứ.
Tôi đặt một ví dụ trên blog của mình về cách giải nén tệp bằng tệp bó :
' 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"
Sử dụng nó như thế này:
cscript //B j_unzip.vbs zip_file_name_goes_here.zip
7-Zip , đây là mã nguồn mở, miễn phí và hỗ trợ nhiều định dạng.
7z.exe x myarchive.zip
Như những người khác đã ám chỉ, 7-zip là tuyệt vời.
Lưu ý: Tôi sẽ nén và sau đó giải nén một tập tin. Giải nén ở phía dưới.
Đóng góp của tôi:
Nhận được
Phiên bản dòng lệnh 7-Zip
URL hiện tại
http://www.7-zip.org/doad.html
Cú pháp?
Bạn có thể đặt các mục sau vào tệp .bat
"C:\Program Files\7-Zip\7z.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256
Tôi đã chỉ ra một vài lựa chọn.
-r là đệ quy. Thông thường những gì bạn muốn với chức năng zip.
a là để "lưu trữ". Đó là tên của tệp zip đầu ra.
-p là mật khẩu (tùy chọn)
-w là một thư mục nguồn. Điều này sẽ lồng các tệp của bạn một cách chính xác trong tệp zip, mà không cần thêm thông tin thư mục.
-mem là cường độ mã hóa.
Co nhung nguoi khac. Nhưng ở trên sẽ giúp bạn chạy.
LƯU Ý: Thêm mật khẩu sẽ khiến tệp zip không thân thiện khi xem tệp qua Windows Explorer. Khách hàng có thể cần bản sao 7-zip (hoặc winzip hoặc khác) của riêng họ để xem nội dung của tệp.
EDIT ::::::::::::( chỉ là những thứ bổ sung).
Có một phiên bản "dòng lệnh" có lẽ phù hợp hơn cho việc này: http://www.7-zip.org/doad.html
(hiện tại (tại thời điểm viết) liên kết trực tiếp) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/doad
Vì vậy, lệnh zip sẽ là (với phiên bản dòng lệnh của công cụ 7 zip).
"C:\WhereIUnzippedCommandLineStuff\7za.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256
Bây giờ phần giải nén : (để giải nén tệp bạn vừa tạo)
"C:\WhereIUnzippedCommandLineStuff\7zipCommandLine\7za.exe" e MySuperCoolZipFile.zip "*.*" -oC:\SomeOtherFolder\MyUnzippedFolder -pmypassword -y -r
Thay thế cho đối số "e", có đối số ax.
e: Extract files from archive (without using directory names)
x: eXtract files with full paths
Tài liệu ở đây:
http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htmlm
Cảm ơn Rich, tôi sẽ lưu ý về điều đó. Vì vậy, đây là kịch bản cho giải pháp của riêng tôi. Nó không yêu cầu công cụ giải nén của bên thứ ba.
Bao gồm tập lệnh bên dưới khi bắt đầu tập tin bó để tạo hàm và sau đó để gọi hàm, lệnh là ...
cscript /B j_unzip.vbs zip_file_name_goes_here.zip
Đây là kịch bản để thêm vào đầu ...
REM Thay đổi thư mục làm việc trở lại thư mục hiện tại để tương thích với Vista & 7 % ~ d0 CD% ~ dp0 Thư mục REM đã thay đổi REM Tập lệnh này tải lên các tập tin của ... > j_unzip.vbs ECHO ' >> j_unzip.vbs ECHO 'Giải nén tập lệnh >> j_unzip.vbs ECHO ' >> j_unzip.vbs ECHO 'Đó là một mớ hỗn độn, tôi biết !!! >> j_unzip.vbs ECHO ' >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2 >> j_unzip.vbs ECHO Đặt ArgObj = WScript.Argument >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO If (Wscript.Argument.Count ^> 0) Sau đó >> j_unzip.vbs ECHO. var1 = ArgObj (0) >> j_unzip.vbs Khác ECHO >> j_unzip.vbs ECHO. var1 = "" >> j_unzip.vbs Kết thúc ECHO nếu >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO Nếu var1 = "" thì >> j_unzip.vbs ECHO. strFileZIP = "example.zip" >> j_unzip.vbs Khác ECHO >> j_unzip.vbs ECHO. strFileZIP = var1 >> j_unzip.vbs Kết thúc ECHO nếu >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO 'Vị trí của tệp zip. >> j_unzip.vbs ECHO REM Đặt WshShell = CreateObject ("Wscript.Shell") >> j_unzip.vbs ECHO REM CurDir = WshShell.ExpandEn MôiStrings ("%% 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 'Thư mục nội dung cần được trích xuất. >> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\" >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO. WScript.Echo ("Trích xuất tệp" ^ & strFileZIP) >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO Đặt objShell = CreateObject ("Shell.Application") >> j_unzip.vbs ECHO Đặt objSource = objShell.NameSpace (strZipFile) .Items () >> j_unzip.vbs ECHO Đặt 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 ("Trích xuất.") >> j_unzip.vbs ECHO.
Có một bài viết về cách xử lý tệp Windows .ZIP tích hợp với VBscript tại đây:
https://www.aspfree.com/c/a/Windows-Scripting/Compression-Folders-in-WSH/
(Đoạn mã cuối cùng liên quan đến trích xuất)
Các tệp ZIP ban đầu được tạo bằng phần mềm dòng lệnh MS-DOS từ PKWare, hai chương trình là PKZIP.EXE và PKUNZIP.EXE. Tôi nghĩ bạn vẫn có thể tải xuống PKUNZIP tại trang web PKWare tại đây:
http://www.pkware.com/software-pkzip/dos-compression
Dòng lệnh thực tế có thể trông giống như thế này:
C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\
Lấy một thực thi từ thông tin-zip .
Info-ZIP hỗ trợ phần cứng từ máy vi tính cho đến siêu máy tính Cray, chạy trên hầu hết tất cả các phiên bản Unix, VMS, OS / 2, Windows 9x / NT / vv. (còn gọi là Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari Tosh, Acorn RISC OS, BeOS, Mac OS, SMS / QĐOS, MVS và OS / 390 OE, VM / CMS, FlexOS, Tandem NSK và Human68K (tiếng Nhật). Ngoài ra còn có một số hỗ trợ (cũ) cho LynxOS, TOPS-20, AOS / VS và Novell NLMs. Thư viện chia sẻ (DLL) có sẵn cho Unix, OS / 2, Win32 và Win16 và giao diện đồ họa có sẵn cho Win32, Win16, WinCE và Mac OS.
Sao chép mã dưới đây vào một tệp bó và thực hiện. Dưới đây yêu cầu Winzip phải được cài đặt / truy cập từ máy của bạn. Thay đổi các biến theo nhu cầu của bạn.
@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