Tạo nhiều tệp zip


-1

Tôi có một loạt các tệp mà tôi muốn nén, tôi cần một tập lệnh để chạy đệ quy qua một thư mục và tìm tất cả các tệp có tên test * .txt làm ví dụ.

Đó là phần dễ dàng, vì vậy tôi đã sử dụng 7zip để làm điều này trong powershell.

Điều tôi cần bây giờ là bằng cách nào đó giới hạn số lượng tệp trên mỗi zip xuống còn 15 tệp.

Vì vậy, một số hạn chế, điều này cần phải ở định dạng .zip và không thể là một zip được kéo dài, tôi nghĩ rằng điều này có thể là để powershell chạy 15 lần và sau đó chỉ cần tạo liên tục các khóa, tức là chạy 15 lần đầu như test.zip sau đó tiếp theo 15 như test1.zip và tiếp theo 15 như test2.zip, v.v.

Dưới đây là mã tôi hiện đang sử dụng.

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 

Câu trả lời:


0

Đây là những gì tôi đã đưa ra - Tôi không đưa ra lời hứa hay gợi ý nào rằng đây là phương pháp duy nhất / tốt nhất. Hy vọng rằng nó sẽ đưa bạn đến gần nơi bạn muốn đến ... :)

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++
    }
}

Tất cả điều này còn thiếu đối với tôi là bảo nó tái diễn khi nhận đồ trẻ em :) Cảm ơn rất nhiều!
Bắt đầu

Này Techie007, dù sao thì điều này có thể bị giới hạn bởi tổng kích thước, bây giờ tôi đã bị ném một quả bóng cong trong đó kích thước tệp zip của tôi phải có kích thước 4GB, tôi có thể lấy nó để kéo kích thước và cho tôi tổng cộng nhưng lặp đi lặp lại 4GB tại một thời điểm đang chứng tỏ sự phức tạp đối với bộ não đơn giản của tôi :)
Jakes

Những gì bạn đang hỏi là phức tạp, vì vậy giải pháp cũng sẽ như vậy. Bạn sẽ phải thu thập tất cả các tệp và kích thước của chúng, sau đó trộn các tệp có kích cỡ khác nhau thành các nhóm sẽ nén xuống dưới 4GB mỗi tệp. Không phải là một nhiệm vụ đơn giản , và nằm ngoài phạm vi của một câu hỏi SU duy nhất và THỰC SỰ nằm ngoài phạm vi cho một nhận xét. ;)
Ƭᴇcʜιᴇ007

Tôi nghĩ rằng nó có thể phức tạp hơn một chút, cảm ơn một lần nữa vì tất cả sự giúp đỡ. Tôi có kích thước nên sẽ viết kịch bản dựa trên các nhóm và chỉ điều chỉnh số PST trên mỗi zip. Cảm ơn một lần nữa
Jakes

Xin chào, tôi đang nhổ tóc ở đây, tôi đã gặp phải một vấn đề là nếu tên tệp giống nhau trong một thư mục khác thì nó chỉ giữ một tệp duy nhất. mọi ý tưởng sẽ được đánh giá rất cao
Jakes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.