当前位置: 首页 > 知识库问答 >
问题:

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

谷梁浩思
2023-03-14

我如何创建一个PowerShell脚本来获取所有类型的。bak文件并将它们添加到一个ZIP文件(当调用时,我可以让我的PowerShell脚本接受一个参数来控制将容纳所有。bak文件的ZIP文件的名称吗?一旦成功压缩,删除。bak文件。

当前目录为:

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

目标是:

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

共有1个答案

傅阿苏
2023-03-14

如果您使用的是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
 类似资料:
  • 问题内容: 我正在尝试将一些文件添加到ZIP文件中,它会创建文件,但不会在其中添加任何内容。代码1: 我的功能: 编辑: 我发现了问题,只是在将文件从C:\驱动器写入F:\驱动器的ZIP时遇到麻烦 问题答案: 您不能压缩文件夹,只能压缩文件。要压缩文件夹,必须手动添加所有子文件。我写了本课来完成这项工作。您可以免费获得它:) 用法是这样的: 这是课程: 请享用! 编辑 :要检查程序是否仍在忙,可以

  • 问题内容: 我想创建一个zip文件。在zip文件中添加一个文件夹,然后在该文件夹中添加一堆文件。 因此,我想得到一个压缩文件,里面只有一个文件夹。 我不知道在zip文件或其他内容中包含文件夹是否是一种不好的做法,但是google在这个问题上没有给我任何帮助。 我从这个开始: 摘自:http : //mail.python.org/pipermail/python- list/2006-August

  • 我们正在努力从Maven迁移到Gradle。不幸的是,我们还有几个战争复盖物要处理。

  • 问题内容: 我们可以创建一个zip新文件并使用Go Language添加文件。 但是,如何使用GoLang使用现有的zip文件添加新文件? 如果可以使用Create函数,如何获取zip.writer参考? 有点困惑。 问题答案: 经过更多分析,我发现无法使用现有的zip文件添加任何文件。 但是,通过遵循此URL中提供的技巧,我能够使用tar文件添加文件。

  • 问题内容: 我当前正在提取war文件的内容,然后将一些新文件添加到目录结构中,然后创建一个新的war文件。 所有这些都是通过Java以编程方式完成的-但我想知道,复制war文件然后追加文件是否会更有效-那么只要战争扩大,我就不必等待,再次被压缩。 但是,在文档或任何在线示例中,我似乎都找不到找到此方法的方法。 任何人都可以给一些提示或指示吗? 更新: 答案之一中提到的TrueZip似乎是一个非常好

  • 问题内容: 我正在尝试使用JFileChooser保存图像。我只希望用户能够将图像另存为jpg。但是,如果他们不输入.jpg,它将不会另存为图像。是否可以以某种方式将“ .jpg”附加到文件末尾? 在将字符串添加到文件时不起作用。 问题答案: 完成后,为什么不将转换为并创建一个新的呢? 请记住,如果已经存在,则不需要添加。