Как распаковать файл с помощью командной строки?[закрыто]

StackOverflow https://stackoverflow.com/questions/1021557

  •  06-07-2019
  •  | 
  •  

Вопрос

Могу ли я разархивировать файлы через командную строку?Предпочтительно использовать инструменты с открытым исходным кодом / бесплатные инструменты.

Это было полезно?

Решение

Вы могли бы использовать :

http://membrane.com/synapse/library/pkunzip.html

или

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

Свободный байт застежка - молния:http://www.freebyte.com/fbzip/

или инфозип: http://infozip.sourceforge.net/

Другие советы

Если у вас уже есть java на вашем компьютере, и каталог bin находится в вашем path (в большинстве случаев), вы можете использовать командную строку:

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]

Во-первых, напишите утилиту распаковки с использованием vbscript, чтобы запустить встроенную функцию распаковки в 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

7-Застежка-молния, он с открытым исходным кодом, бесплатный и поддерживает широкий спектр форматов.

7z.exe x myarchive.zip

Как уже упоминали другие, 7-zip - это здорово.

Примечание:Я собираюсь заархивировать, а затем разархивировать файл.Расстегните молнию внизу.

Мой вклад:

Получить

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, или другая) для просмотра содержимого файла.

РЕДАКТИРОВАТЬ::::::::::::( просто дополнительный материал).

Существует версия "командной строки", которая, вероятно, лучше подходит для этого:http://www.7-zip.org/download.html

(текущая (на момент написания статьи) прямая ссылка) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

Таким образом, команда zip - архивирования было бы (с версией командной строки 7 zip tool).

"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

Спасибо, Рич, я приму это к сведению.Итак, вот сценарий для моего собственного решения.Для этого не требуются сторонние инструменты для распаковки файлов.

Включите приведенный ниже скрипт в начало пакетного файла для создания функции, а затем для вызова функции выполните команду...cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Вот скрипт для добавления в топ...

REM Changing working folder back to current directory for Vista & 7 compatibility
%~d0
CD %~dp0
REM Folder changed

REM This script upzip's files...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO ' UnZip a file script
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO ' It's 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.

Существует статья о том, как добраться до встроенной Windows.Обработка ZIP-файлов с помощью VBScript здесь:

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

(Последнее описание кода касается извлечения)

Возьмите исполняемый файл из информация-zip.

Info-ZIP поддерживает аппаратное обеспечение от микрокомпьютеров вплоть до суперкомпьютеров Cray, работающих практически на всех версиях Unix, виртуальных машинах, OS / 2, Windows 9x / NT / etc.(он же.Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS/ QDO, MVS и OS/390 OE, VM / CMS, FlexOS, Tandem NSK и Human68K (японский).Существует также некоторая (старая) поддержка LynxOS, TOPS-20, AOS / VS и Novell NLMS.Общие библиотеки (DLL) доступны для Unix, OS/2, Win32 и Win16, а графические интерфейсы доступны для Win32, Win16, WinCE и Mac OS.

Первоначально 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\

Скопируйте приведенный ниже код в пакетный файл и выполните.Для приведенного ниже требуется, чтобы 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top