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

2024-02-18

如何创建 PowerShell 脚本来获取所有 .BAK 类型的文件并将它们添加到 ZIP 文件中(我可以让我的 PowerShell 脚本在调用时采用参数来控制将容纳所有 .bak 文件的 ZIP 文件的名称吗? ? 成功压缩后删除.bak 文件。

当前目录是:



C:\SQLBackups
+- a.bak
+- b.bak
`- c.bak
  

Goal is:



C:\SQLBackups
`- v4.14.4_backups.zip
  

我对 PowerShell 还很陌生,目前我的脚本将每个 .bak 文件压缩到 .zip 文件中,但这并不好。

$filePath = "C:\SQLBackups\"
$bak = Get-ChildItem -Recurse -Path $filePath |
       Where-Object { $_.Extension -eq ".bak" }

if (-not (Test-Path "$env:C:\Program Files\7-Zip\7z.exe")) {
  throw "$env:Program Files (x86)\7-Zip\7z.exe needed"
}
Set-Alias sz "$env:ProgramFiles\7-Zip\7z.exe"

foreach ($file in $bak) {
  $name = $file.Name
  $directory = $file.DirectoryName
  $zipfile = $name.Replace(".bak", ".zip")
  sz a -t7z "$directory\$zipfile" "$directory\$name"
}

当前的输出将是:



a.bak
a.zip
b.bak
b.zip
c.bak
c.zip
  

如果您使用的是 PowerShell v5,那么您可以使用Compress-Archive函数而不是使用 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐