问题: Powershell 是否可以为目录中找到的每个对象自动创建单独的压缩存档文件?
背景:
- 包含数百个文件(各种文件类型)的目录
- 我需要为每一个创建一个压缩档案。
概念工作流程:
- Powershell 脚本指向一个目录
- Powershell 发现一堆文件(各种扩展名)
- Powershell 自动将“Widget.CFG”压缩为 .ZIP 文件
- 对同一目录中找到的所有其他对象重复此过程
环境:
- 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
}
}
}