Можно ли разархивировать файлы через командную строку? Предпочтительно использовать инструменты с открытым исходным кодом/бесплатно.
Как распаковать файл с помощью командной строки?
Ответ 1
Вы можете использовать:
http://membrane.com/synapse/library/pkunzip.html
или
7zip: http://www.7-zip.org/download.html
Бесплатный байт zip: http://www.freebyte.com/fbzip/
или infozip: http://infozip.sourceforge.net/
Ответ 2
Если у вас уже есть Java на вашем компьютере, и каталог bin находится в вашем пути (в большинстве случаев), вы можете использовать командную строку:
jar xf test.zip
или если нет в вашем пути:
C:\Java\jdk1.6.0_03\bin>jar xf test.zip
Полный набор опций для инструмента jar доступен здесь.
Примеры:
Extract jar file
jar x[v]f jarfile [inputfiles] [-Joption]
jar x[v] [inputfiles] [-Joption]
Ответ 3
Во-первых, напишите утилиту unzip, используя vbscript, чтобы запустить собственную функцию распаковки в Windows. Затем вытащите script из своего пакетного файла и затем вызовите его. Тогда это так же хорошо, как самостоятельное. Я делал это в прошлом для многочисленных задач. Таким образом, он не требует необходимости сторонних приложений, а всего лишь один пакетный файл, который делает все.
Я разместил пример в своем блоге о том, как распаковать файл с помощью командного файла:
' j_unzip.vbs
'
' UnZip a file script
'
' By Justin Godden 2010
'
' It 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
Ответ 4
7-Zip, он с открытым исходным кодом, бесплатный и поддерживает широкий диапазон форматов.
7z.exe x myarchive.zip
Ответ 5
Как говорили другие, 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. Для просмотра содержимого файла клиенту может понадобиться собственная копия 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
Документация здесь:
http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm
Ответ 6
Спасибо, Rich, я обращу внимание на это. Итак, вот script для моего собственного решения. Он не требует сторонних инструментов распаковки.
Включите script ниже в начале командного файла для создания функции, а затем для вызова функции команда...
cscript /B j_unzip.vbs zip_file_name_goes_here.zip
Вот script, чтобы добавить в начало...
REM Changing working folder back to current directory for Vista & 7 compatibility %~d0 CD %~dp0 REM Folder changed REM This script upzip files... > j_unzip.vbs ECHO ' >> j_unzip.vbs ECHO ' UnZip a file script >> j_unzip.vbs ECHO ' >> j_unzip.vbs ECHO ' It a mess, I know!!! >> j_unzip.vbs ECHO ' >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO ' Dim ArgObj, var1, var2 >> j_unzip.vbs ECHO Set ArgObj = WScript.Arguments >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Then >> j_unzip.vbs ECHO. var1 = ArgObj(0) >> j_unzip.vbs ECHO Else >> j_unzip.vbs ECHO. var1 = "" >> j_unzip.vbs ECHO End if >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO If var1 = "" then >> j_unzip.vbs ECHO. strFileZIP = "example.zip" >> j_unzip.vbs ECHO Else >> j_unzip.vbs ECHO. strFileZIP = var1 >> j_unzip.vbs ECHO End if >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO 'The location of the zip file. >> j_unzip.vbs ECHO REM Set 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 'The folder the contents should be extracted to. >> j_unzip.vbs ECHO outFolder = sCurPath ^& "\" >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO. WScript.Echo ( "Extracting file " ^& strFileZIP) >> j_unzip.vbs ECHO. >> j_unzip.vbs ECHO Set objShell = CreateObject( "Shell.Application" ) >> j_unzip.vbs ECHO Set objSource = objShell.NameSpace(strZipFile).Items() >> j_unzip.vbs ECHO Set 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 ( "Extracted." ) >> j_unzip.vbs ECHO.
Ответ 7
Существует статья о том, как получить доступ к встроенной в Windows.ZIP-обработке файлов с помощью VBscript:
http://www.aspfree.com/c/a/Windows-Scripting/Compressed-Folders-in-WSH/3/
(Последний разворот кода относится к извлечению)
Ответ 8
Возьмите исполняемый файл из 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.
Ответ 9
Первоначально 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\
Ответ 10
Скопируйте приведенный ниже код в пакетный файл и выполните. Ниже требуется, чтобы 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