Пакетный файл для сжатия подкаталогов индивидуально с помощью собственных инструментов Windows - PullRequest
0 голосов
/ 21 декабря 2018

Я видел варианты ответа на этот вопрос, но обычно использовал что-то вроде 7zip.Я пытаюсь найти решение, которое будет работать с возможностями Windows без каких-либо дополнительных инструментов.

У меня есть каталог, который содержит несколько сотен подкаталогов.Мне нужно отдельно сжать каждый подкаталог .... поэтому я получу несколько сотен zip-файлов, по одному на каждый подкаталог.Это на компьютере на работе, где у меня нет прав администратора для установки нового программного обеспечения ... отсюда и желание держаться подальше от 7zip, winRar и т. Д.

Если это уже было дано в другом месте, мойизвинения ...

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018
Get-ChildItem c:\path\of\your\folder | ForEach-Object {
    $path = $_.FullName
    Compress-Archive -Path $path -DestinationPath "$path.zip"
}

Я поставил это, как быстрый фрагмент.Не стесняйтесь комментировать, если это не соответствует вашему запросу.В папке X находятся подпапки Y1, Y2 ...

Y1.zip, Y2.zip ....

0 голосов
/ 21 декабря 2018

Сам никогда не пробовал, но есть Compress-Archive:

Командлет Compress-Archive создает архивированный (или сжатый) архивный файл из одного или нескольких указанных файловили папки.Архивный файл позволяет упаковывать и, по желанию, сжимать несколько файлов в один заархивированный файл для облегчения распространения и хранения.Архивный файл может быть сжат с использованием алгоритма сжатия, указанного параметром CompressionLevel.

Поскольку Compress-Archive использует Microsoft .NET Framework API System.IO.Compression.ZipArchive для сжатия файлов, максимальный размер файлачто вы можете сжать с помощью Compress-Archive в настоящее время 2 ГБ.Это ограничение базового API.

Вот пример сценария, который я только что взломал вместе:

# configure as needed
$source = "c:\temp"
$target = "d:\temp\test"

# grab source file names and list them
$files = gci $source -recurse
$files

# target exists?
if( -not (test-path $target)) {
    new-item  $target  -type directory  
}

# compress, I am using -force here to overwrite existing files
$files | foreach{
    $dest = "$target\" + $_.name + ".zip"
    compress-archive  $_  $dest  -CompressionLevel Optimal  -force
}

# list target dir contents
gci $target -recurse

Возможно, вам придется немного его улучшить, когда дело доходит до подпапок.В вышеприведенной версии подпапки сжимаются целиком в один файл.Это может быть не совсем то, что вы хотите.

...