将一种类型的文件添加到一个zip文件中,并使用PowerShell进行清理

将一种类型的文件添加到一个zip文件中,并使用PowerShell进行清理,powershell,zip,Powershell,Zip,如何创建PowerShell脚本以获取所有.BAK类型的文件并将其添加到ZIP文件中(调用PowerShell脚本以控制将容纳所有.BAK文件的ZIP文件的名称时,是否可以让我的PowerShell脚本接受参数?成功压缩后删除.BAK文件 当前目录为: C:\SQLBackups +- a.bak +- b.bak `- c.bak 电流输出为: a.bak a.zip b.bak b.zip c.bak c.zip a、 贝克 a、 拉链 b、 贝克 b、 拉链 c、 贝克 c、 拉链 如果您

如何创建PowerShell脚本以获取所有.BAK类型的文件并将其添加到ZIP文件中(调用PowerShell脚本以控制将容纳所有.BAK文件的ZIP文件的名称时,是否可以让我的PowerShell脚本接受参数?成功压缩后删除.BAK文件

当前目录为:

C:\SQLBackups +- a.bak +- b.bak `- c.bak 电流输出为:

a.bak a.zip b.bak b.zip c.bak c.zip a、 贝克 a、 拉链 b、 贝克 b、 拉链 c、 贝克 c、 拉链
如果您使用的是PowerShell v5,则可以使用
压缩存档
功能,而不是使用7zip:

$filePath = "C:\SQLBackups"
$ZipName = "v4.14.4_backups.zip"

$BakFiles = Get-ChildItem -Recurse -Path $filePath -Include *.bak

$BakFiles | Compress-Archive -DestinationPath "$filePath\$ZipName"
$BakFiles | Remove-Item -Force

您在循环中处理的每个文件后命名存档,因此每个文件都进入其自己的存档。如果要将所有文件放入同一存档,请在循环外定义一次存档名称:

$zipfile = Join-Path $filePath 'v4.14.4_backups.zip'
foreach ($file in $bak) {
  sz a -t7z $zipfile $file.FullName
}
请通过直接更新您的问题来澄清您是否只希望在
C:\SQLBackups
-的整个子树中的所有
*.bak
文件使用一个ZIP文件,或者您是否希望该子树中的每个目录使用一个ZIP文件。
$zipfile = Join-Path $filePath 'v4.14.4_backups.zip'
foreach ($file in $bak) {
  sz a -t7z $zipfile $file.FullName
}