首页 > 解决方案 > 如何将文件夹中的每个 X 子文件夹压缩为单独的 rar 文件

问题描述

我对 Powershell 编码真的很陌生,需要你的帮助

我在带有 Powershell 5.1 的 Windows 10 上,并试图用 Winrar 解决它。主文件夹包含 5000 个子文件夹我想指定每个存档应包含多少个文件夹,并将其中的每个 X 压缩为单独的 rar 文件。

创建文本文件并为每个 rar 文件创建一个 .txt 文件,其中包含每个 rar 中的所有子文件夹名

例如:首先:指定每个存档应该包含多少个文件夹

包含 5000 个子文件夹的文件夹名称为“Project”

所有 rar 文件应与主文件夹同名,并带有连续编号:在这种情况下

Project - 01.rar
Project - 02.rar
Project - 03.rar
Project - 04.rar
Project - 05.rar
etc....

每个 rar 文件都有一个 txt 文件,其中列出了 rar 文件的内容

Project - 01.txt
Project - 02.txt
Project - 03.txt
Project - 04.txt
Project - 05.txt 
etc...

有没有办法不手动执行?

标签: windowspowershellzipcompressionpowershell-v5.1

解决方案


这是我的脚本,到目前为止它有效

param
(
    # The input folder containing the files to zip
    [Parameter(Mandatory = $true)]
    [string] $InputFolder,

    # The output folder that will contain the zip files
    [Parameter(Mandatory = $true)]
    [string] $OutputFolder
)

Set-Variable SET_SIZE -option Constant -value 10
$i = 0
$zipSet = 0

Get-ChildItem $InputFolder | ForEach-Object {
    $zipSetName = "archive" + ($zipSet + 1) + ".zip"
    Compress-Archive -Path $_.FullName -Update -DestinationPath "$OutputFolder\$zipSetName"
    $i++;

    if ($i -eq $SET_SIZE) {
        $i = 0;
        $zipSet++;
    }
}

现在我需要一些帮助来添加上述选项和

  • 将输入和输出设置为当前正在执行的 powershell 脚本的路径在一个批处理文件中我会做:%~d0%~p0
  • 在主文件夹中创建一个文件夹“完成”,并将所有已添加到存档的子文件夹移动到“完成”
  • 如果提供 rar 支持,则始终使用 rar,否则使用 zip

谢谢


推荐阅读