压缩和存档指定文件夹中的所有文件

时间:2017-04-12 14:42:43

标签: powershell zip 7zip

我正在尝试压缩我们每天收到的所有销售数据,并在处理完文件后将其归档并将zip文件重命名为saletransactions_mmddyyyy.zip。我的脚本试图压缩每个单独的文件。如何将所有文件更改为一个zip文件。

$srcPath = "\\networkshare\test\sale"
$destPath = "\\networkshare\test\sale\archive\"
$ext = Get-ChildItem -Path $srcPath | Where-Object { ($_.Extension -eq ".txt") }

Set-Alias sz "\\networkshare\test\7z.exe"

foreach ($file in $ext) {
  $name = $file.Name
  $directory = $file.DirectoryName
  $zipfile = $name.Replace(".txt", ".7z")
  sz a -t7z "$destPath\$($file.BaseName).zip" $file
}

1 个答案:

答案 0 :(得分:0)

在代码的最后一行,这里

sz a -t7z "$destPath\$($file.basename).zip" $file 

在这一行中,您告诉7Zip将文件添加到zip存档中,该存档的名称与您要添加的文件相同。这意味着输出zip将始终与文件名相同,这就是为每个输入文件获取一个zip文件的原因。

如果您想将它们全部添加到每月存档中,请首先在代码顶部的某处定义输出文件的名称,如下所示。

$month = "03_2017"

然后,将最后一行改为此,你就会好起来。

7z a -t7z $destPath\$month.zip" $file