Как вы можете zip или распаковать из скрипта, используя только встроенные возможности Windows? [закрытый]
В Windows вы можете zip некоторые файлы
щелкните правой кнопкой мыши -- > отправить в -- > сжатая (сжатая) папка
и unzip двойным щелчком на .zip файл и извлечь файлы.
есть ли способ применить эти способности из сценария (.bat file)без необходимости устанавливать какие-либо 3rd party?
14 ответов:
еще в 2013 году, это было невозможно. MS не предоставил исполняемого файла для этого.
см. эту ссылку для некоторых VBS способ сделать это. https://superuser.com/questions/201371/create-zip-folder-from-the-command-line-windows
начиная с Windows 8, .Net Framework 4.5 устанавливается по умолчанию, с System. IO. Compression. ZipArchive и PowerShell доступны, можно писать сценарии для достижения этой цели, видеть https://stackoverflow.com/a/26843122/71312
чтобы расширить решение PowerShell Стивена пенни, вы можете включить его в пакетный файл, вызвав powershell.exe вот так:
powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar'); }"Как сказал Иван Шило, это не будет работать с PowerShell 2, для этого требуется PowerShell 3 или выше и .NET Framework 4.
PowerShell может сделать это
Add-Type -A System.IO.Compression.FileSystem [IO.Compression.ZipFile]::CreateFromDirectory('foo', 'foo.zip') [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', 'bar')
Если у вас Java установлен, вы можете сжать в ZIP-архив с помощью jar:
jar -cMf targetArchive.zip sourceDirectoryc = создает новый архивный файл.
M = указывает, что файл манифеста не должен быть добавлен в архив.
f = указывает имя целевого файла.
PowerShell 5.0
С
Microsoft.PowerShell.Archiveвы можете использовать:например:
создать
result.zipвсего :Compress-Archive -Path C:\Test -DestinationPath C:\resultизвлеките содержимое
result.zipв указаннойTestпапка:Expand-Archive -Path result.zip -DestinationPath C:\Test
это не совсем zip, но единственный способ сжать файл с помощью инструментов Windows:
makecab <source> <dest>.cabдля распаковки:
expand <source>.cab <dest>расширенный пример (от ss64.com):
Create a self extracting archive containing movie.mov: C:\> makecab movie.mov "temp.cab" C:\> copy /b "%windir%\system32\extrac32.exe"+"temp.cab" "movie.exe" C:\> del /q /f "temp.cab"Подробнее: makecab,расширения,makecab advanced использует
С Помощью 7-Zip:
Zip: у вас есть папка
foo, и хочу застегнуть его наmyzip.zip"C:\Program Files-Zipz.exe" a -r myzip.zip -w foo -mem=AES256распакуйте: вы хотите распаковать его (
myzip.zip) в текущей директории (./)"C:\Program Files-Zipz.exe" x myzip.zip -o./ -y -r
Я искал ответ на этот точный вопрос, и из моих исследований ответ DiryBoy кажется точным.
Я нашел компактный.программа exe сжимает файлы, но не для создания сильно сжатого файла (или набора файлов). Это похоже на вариант, который вы получаете при щелчке правой кнопкой мыши на букву диска или раздел в Windows. Вы получаете возможность выполнять очистку (удалять временные файлы и т. д.), а также сжимать файлы. Сжатые файлы по-прежнему доступны, но только сжатие для создания пространства на диске с низким уровнем пространства.
Я нашла компресс.exe, который у меня действительно был на моем компьютере. Он не является изначально на большинстве машин windows и является частью набора ресурсов 2003 года. Он делает заархивированный файл, но он действительно больше похож на файлы с установочного диска windows (имеет подчеркивание в качестве последнего символа расширения или имени файла). И выписка.команда exe извлекает эти файлы.
однако, мантра, если это может быть сделано изначально через графический интерфейс, то есть, вероятно, способ сделать это с помощью пакета,.ВБС или какой-либо другой тип скрипта в командной строке. Поскольку у windows была опция "отправить" для создания zip-файла, я знал, что должен быть способ сделать это через командную строку, и я нашел несколько вариантов.
вот отличная ссылка, которая показывает, как zip файл с помощью Windows native команды.
Я тестировал его с каталога, содержащего несколько вложенных файлов и папок и он работал отлично. Просто следуйте формату командной строки.
существует также способ распаковать файлы через командную строку, которую я также нашел. Один из способов, просто открывает окно Проводника, показывая, что содержание заархивированный файл есть. Некоторые из них также используют Java, который не обязательно является родным для windows, но настолько распространен, что это почти кажется так.
вы можете использовать vbsscript, завернутый в файл BAT... это мой код, который работает на относительном пути...
нет необходимости в каких-либо сторонних инструментов или зависимостей.. просто установите источник и место назначения.
имя файла: zipping.летучая мышь
echo Set fso = CreateObject("Scripting.FileSystemObject") > _zipup.vbs echo InputFolder = fso.GetAbsolutePathName(WScript.Arguments.Item(0)) >> _zipup.vbs echo ZipFile = fso.GetAbsolutePathName(WScript.Arguments.Item(1)) >> _zipup.vbs 'Create empty ZIP file. echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar) >> _zipup.vbs echo Set objShell = CreateObject("Shell.Application") >> _zipup.vbs echo Set source = objShell.NameSpace(InputFolder).Items >> _zipup.vbs echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipup.vbs echo 'Keep script waiting until compression is done echo Do Until objShell.NameSpace( ZipFile ).Items.Count = objShell.NameSpace( InputFolder ).Items.Count >> _zipup.vbs echo WScript.Sleep 200 >> _zipup.vbs echo Loop >> _zipup.vbs CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP% del _zipup.vbs
Open source-это ваш друг : -)
вот распаковать:http://gnuwin32.sourceforge.net/packages/unzip.htm
также есть команда ZIP: http://gnuwin32.sourceforge.net/packages/zip.htm
загрузка двоичных файлов достаточно.
Если вам нужно сделать это как часть сценария, то лучший способ-это использовать Java. Предполагая, что каталог bin в PATH (в большинстве случаев), вы можете использовать командную строку:
jar xf test.zipЕсли Java не находится на вашей ссылке pass напрямую:
C:\Java\jdk1.6.0_03\bin>jar xf test.zip
вы говорите, что пытаетесь сделать это без стороннего программного обеспечения. Я не уверен, что вы считаете .NET "сторонним" программным обеспечением.
но вы можете создать свою собственную утилиту командной строки в. NET.It не должно требовать больше, чем несколько строк кода.
https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile(v=vs. 110).aspx
вы можете распаковать сжатый или собственный сжатый файл windows с помощью расширения, например,
expand MyFile.zip myFile
для zip файла:
C:\> zip -9 -m -o file.dat.zip file.dat
- -9 максимальное сжатие
- -м удалить исходный файл после успешного сжатия
- - o установите дату изменения zip-файла так же, как и исходный файл
- жаль, что нужно дать ему имя нужного zip-файла вместо того, чтобы просто добавлять .zip расширение к имени файла для сжатия
Comments