Powershell 可以自动为目录中的每个文件创建单独的 ZIP 文件吗?

Powershell 可以自动为目录中的每个文件创建单独的 ZIP 文件吗?

问题: Powershell 是否可以为目录中找到的每个对象自动创建单独的压缩存档文件?

背景:

  • 包含数百个文件(各种文件类型)的目录
  • 我需要为每一个创建一个压缩档案。

概念工作流程:

  1. Powershell 脚本指向一个目录
  2. Powershell 发现一堆文件(各种扩展名)
  3. Powershell 自动将“Widget.CFG”压缩为 .ZIP 文件
  4. 对同一目录中找到的所有其他对象重复此过程

环境:

  • Windows 7/64 位操作系统
  • Powershell 版本 5(主要版本:5 次要版本:1 内部版本:15363 修订版本:786)

这可能吗?

我想到的脚本(如下)没有产生任何输出,我不知道为什么。

我目前拥有的:

$Path = "C:\ziptest"   

function Compress-ChildItem {   
    [CmdletBinding()]   
    param(   
        [Parameter(Position = 0, Mandatory, ValueFromPipeline)]   
        [ValidateNotNull()]   
        [System.IO.DirectoryInfo[]]   
        $Path   
    )   
    process {   
        Get-ChildItem -File $Path | ForEach-Object {   
            $NewName = "{0}-{1}.zip" -f $_.BaseName, ($_.Extension -replace '.')   
            $CompressionParams = @{   
                DestinationPath = Join-Path $Path -ChildPath $NewName   
                Path = $_.FullName   
            }   
            Compress-Archive @CompressionParams   
        }   
    }   
}    

相关内容