如何将文件夹中的每个 X 子文件夹压缩为单独的 rar 文件

Posted

技术标签:

【中文标题】如何将文件夹中的每个 X 子文件夹压缩为单独的 rar 文件【英文标题】:How can I compress every X subfolder in a folder as a separate rar file 【发布时间】:2019-05-26 14:49:47 【问题描述】:

我是 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...

有没有办法不手动操作?

【问题讨论】:

你试过什么?你有winrar的命令行版本吗? @js2010 这就是我到目前为止所做的 【参考方案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

谢谢

【讨论】:

以上是关于如何将文件夹中的每个 X 子文件夹压缩为单独的 rar 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将包含 30 多个压缩文件的文件夹存储到 r 中的变量中

如何将每个带有一组子命令的 Click 命令拆分为多个文件?

Hadoop 解压缩目录中的文件并将每个文件单独移动到另一个文件夹

linux:如何在归档 tar/cpio/...other 中单独压缩每个文件

如何使用 OCaml 将两个列表中的每个单独元素压缩到一个列表中

为数据帧分配新名称并将其另存为R中的单独对象