-1

У меня есть куча файлов, которые я хотел бы сжать, мне нужен скрипт для рекурсивного запуска по каталогу и поиска всех файлов с именем test * .txt в качестве примера.

Это простая часть, поэтому я использовал 7zip для этого в powershell.

Теперь мне нужно как-то ограничить количество файлов на zip до 15 файлов.

Таким образом, некоторые ограничения, это должно быть в формате .zip и не может быть составным zip, я думаю, что это возможно - заставить powershell запускать 15 одновременно, а затем просто последовательно создавать zip, то есть запускать первые 15 как test.zip затем следующие 15 как test1.zip и затем следующие 15 как test2.zip и т. д.

Ниже приведен код, который я сейчас использую.

if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"} 
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe" 
$filename="test"
sz a -tzip -mx5 -mmt=on $Target\"$filename.zip" $Source\$filename*.txt -r 

1 ответ1

0

Вот что я придумал - я не даю никаких обещаний или предположений, что это единственный / лучший метод. Надеюсь, это даст вам большую часть пути туда, где вы хотите быть ... :)

if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {
    throw "$env:ProgramFiles\7-Zip\7z.exe needed"
} 

set-alias sz "$env:ProgramFiles\7-Zip\7z.exe" 

$filename="test"

# Get the list of files to zip  
$fileList = gci $Source\$filename*.txt

# Initalize a counter to keep track of which Zip we're working on.
$zipCounter = 1

# Loop through the file list, one at a time.
for ($i = 0; $i -lt $fileList.Length; $i++) {

    # Use the current entry in the File List array to add the file to the zip.
    sz a -tzip -mx5 -mmt=on "$target\$filename$zipCounter.zip" $fileList[$i] -r

    # Use modulus - if it returns no remainder, then the current loop is a multiple of 15. 
    # (+1 and putting it last in the loop make it consider the zip name for the NEXT loop.
    # I did this because "0 % 15 = 0"). 
    if (($i + 1) % 15 -eq 0) {
        # Multiple of 15? Time to switch to the next zip file.
        $zipCounter++
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .