В Windows вы можете архивировать некоторые файлы
щелкните правой кнопкой мыши → Отправить в → Сжатую (заархивированную) папку
И распакуйте, дважды щелкнув .zip
файл и извлеките файлы.
Есть ли способ применить эти возможности из сценария (файл .bat) без необходимости установки какого-либо стороннего программного обеспечения ?
windows
batch-file
zip
Роуи Гавирель
источник
источник
Ответы:
Еще в 2013 году это было невозможно. Microsoft не предоставила никакого исполняемого файла для этого.
Смотрите эту ссылку для некоторых VBS способ сделать это. /superuser/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 2, для этого требуется PowerShell 3 или выше и .NET Framework 4.
источник
'.'
, например:powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.'); }"
& {}
? С PS5 это тоже работает:powershell.exe -nologo -noprofile -command "Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.');"
Начиная с .NET 4.5 PowerShell может делать это:
Для последних двух строк,
bar
иfoo
может быть заменено на имя, которое вы хотели бы иметь в папке, или любое другое имя существующей папки.foo.zip
в обоих случаях действует как zip-файл либо для сохранения, либо для распаковки.источник
Если у вас установлена Java, вы можете сжать ее в ZIP-архив с помощью
jar
команды:источник
PowerShell 5.0
Из
Microsoft.PowerShell.Archive
вы можете использовать:Compress-Archive
Expand-Archive
Например:
Создать
result.zip
из всейTest
папки:Распакуйте содержимое
result.zip
в указаннуюTest
папку:источник
powershell Compress-Archive -Path C:\SomeFile.ext -DestinationPath C:\SomeFile.zip
прямо из командной строки без необходимости создавать сценарий (при условии, что у вас установлен Powershell v5, что вы можете сделать, по крайней мере, возвращаясь к Windows 7).Это не совсем ZIP, но единственный способ сжать файл с помощью инструментов Windows:
Чтобы распаковать:
Расширенный пример (с ss64.com):
Более подробная информация: MakeCab , расширение , MakeCAB расширенного использования
источник
Используя 7-Zip:
Zip : у вас есть папка
foo
, и вы хотите сжать ееmyzip.zip
Разархивировать : вы хотите разархивировать его (
myzip.zip
) в текущий каталог (./
)источник
without the need to install any 3rd party
Я искал, чтобы ответить на этот точный вопрос, и из моего исследования ответ DiryBoy, кажется, точен.
Я обнаружил, что программа compact.exe сжимает файлы, но не для создания сильно сжатого файла (или набора файлов). Это похоже на параметр, который вы получаете, щелкнув правой кнопкой мыши по букве диска или раздела в Windows. Вы можете выполнить очистку (удалить временные файлы и т. Д.), А также сжать файлы. Сжатые файлы по-прежнему доступны, но просто сжимаются, чтобы освободить место на диске, на котором мало места.
Я также нашел compress.exe, который у меня случился на моем компьютере. Это не изначально на большинстве машин Windows и является частью набора ресурсов 2003 года. Он создает сжатый файл, но на самом деле он больше похож на файлы с установочного диска Windows (подчеркивание является последним символом расширения или имени файла). И команда extract.exe извлекает эти файлы.
Тем не менее, мантра заключается в том, что если это можно сделать естественным образом с помощью графического интерфейса, то, скорее всего, есть способ сделать это с помощью пакета, .vbs или другого типа сценария в командной строке. Поскольку в Windows была опция «отправить» для создания zip-файла, я знал, что должен быть способ сделать это через командную строку, и я нашел несколько вариантов.
Вот отличная ссылка, которая показывает, как заархивировать файл с помощью собственных команд Windows.
/superuser/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili
Я протестировал его с каталогом, содержащим несколько вложенных файлов и папок, и он работал отлично. Просто следуйте формату командной строки.
Есть также способ разархивировать файлы через командную строку, которую я также нашел. Один из способов - просто открыть окно обозревателя, в котором показано содержимое сжатого файла. Некоторые из них также используют Java, который не обязательно является родным для окон, но настолько распространен, что кажется почти так.
/superuser/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default
Как распаковать файл с помощью командной строки?
источник
Вы можете использовать скрипт VBScript, завернутый в BAT-файл. Этот код работает на относительном PATH.
Там нет необходимости каких-либо сторонних инструментов или зависимостей. Просто установите
SOURCEDIR
иOUTPUTZIP
.Имя файла: ZipUp.bat
Пример использования
В качестве альтернативы, вы можете параметризовать этот файл, заменив строку
CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
наCScript _zipup.vbs %1 %2
, и в этом случае его можно еще проще вызвать простым вызовомCALL ZipUp C:\Source\Dir C:\Archive.zip
.источник
У меня проблема со всеми этими решениями.
Они не совсем одинаковые, и все они создают файлы, которые имеют небольшую разницу в размере по сравнению с файлами
RMB --> send to --> compressed (zipped) folder
из одной и той же исходной папки. Самое близкое различие в размере, которое у меня было, - разница в 300 КБ (скрипт> руководство), сделанная с:(Обратите внимание на -CompressionLevel . Существует три возможных значения : Fastest, NoCompression & Optimal, (по умолчанию: Optimal))
Я хотел создать файл .bat, который должен автоматически сжимать папку плагина WordPress, над которой я работаю, в архив .zip, чтобы я мог загрузить его на сайт WordPress и протестировать плагин.
Но по какой-то причине он не работает ни с одним из этих автоматических сжатий, но он работает с ручным сжатием RMB, что я считаю действительно странным.
И сгенерированные скриптом .zip-файлы фактически разбивают плагины WordPress до такой степени, что их невозможно активировать, а также их нельзя удалить изнутри WordPress. Я должен SSH в «обратную сторону» сервера и вручную удалить загруженные файлы плагинов. Хотя вручную сгенерированные файлы RMB работают нормально.
источник
Если вам нужно сделать это как часть скрипта, тогда лучше всего использовать Java. Предполагая, что каталог bin находится в вашем пути (в большинстве случаев), вы можете использовать командную строку:
Если Java не на вашем пути, обратитесь к нему напрямую:
источник
С открытым исходным кодом ваш друг :-)
Вот распаковка : http://gnuwin32.sourceforge.net/packages/unzip.htm
Также есть команда ZIP: http://gnuwin32.sourceforge.net/packages/zip.htm
Двоичные файлы загрузки достаточно.
источник
Это обновленная версия для ответа, предоставленного @ PodTech.io
В этой версии все коды VBS правильно экранированы в командном файле. Он также создан в подпрограмму, которая может быть вызвана одной строкой из любого места в вашем пакетном скрипте:
источник
Вы говорите, что пытаетесь сделать это без стороннего программного обеспечения. Я не уверен, что вы считаете .NET "сторонним" программным обеспечением.
Но вы можете создать свою собственную утилиту командной строки в .NET. Это не должно требовать больше, чем несколько строк кода.
Класс ZipFile
источник
Добавление на @Jason Duffett в ответ и его комментарии, вот скрипт , который получает входной и выходной (имя файла и имя каталога, соответственно) от пользователя:
Использование:
источник
Чтобы заархивировать файл:
источник
Вы можете распаковать сжатый или собственный сжатый файл Windows с помощью команды Expand , например:
источник
Expand file.zip file
просто копирует zip в другой файл без расширения. Он не распаковывает ZIP в папку.