如何压缩/ 7zip /或任何其他压缩文件列表

时间:2016-06-06 07:37:32

标签: powershell zip 7zip

我基本上尝试做一些基本的日志删除操作 通过几个步骤。

1 - 获取所有早于X天的文件(在我的情况下为7)
第二 - 拉链到不同的位置
3 - 删除压缩文件
4 - 浏览压缩日志文件夹并删除旧版本30天

第一 - 完成 - 我得到文件列表
第三 - 不是问题 - 我认为 第4名 - 与第1名相同......

第二...在这里我尝试使用7zip,因为它已经嵌入在Windows中 我们有严格的政策重新划分第三方工具 所以winrar不是一个选项

这是我尝试的代码,但我没有得到任何结果 它在zip命令上失败

if ((Test-Path "$env:ProgramFiles\7-Zip\7z.exe") -eq $true){Set-Alias sz "$env:ProgramFiles\7-Zip\7z.exe" }
$DateStr = (Get-Date).ToString("dd-MM-yyyy")
$arcPath = "D:\SDDP\LOG_Archive_$DateStr.zip"

$limit = (Get-Date).AddDays(-7)
$path = "D:\SDDP\LOG"

$filesToBackUP = Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit }
ForEach ( $file in $filesToBackUP )
    {
        sz a -tzip $archPath $file.FullName
    }

我得到的错误是:

Open archive: D:\SDDP\LOG\DISTRIBUTOR(232)\04-09-2015\SDDP_DISTRIBUTOR(232)_04-09-2015_1.csv
sz : ERROR: D:\SDDP\LOG\DISTRIBUTOR(232)\04-09-2015\SDDP_DISTRIBUTOR(232)_04-09-2015_1.csv
At line:13 char:9
+         sz a -tzip $archPath $file.FullName
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (ERROR: D:\SDDP\...4-09-2015_1.csv:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

D:\SDDP\LOG\DISTRIBUTOR(232)\04-09-2015\SDDP_DISTRIBUTOR(232)_04-09-2015_1.csv
Open ERROR: Can not open the file as [zip] archive
ERRORS:
Is not archive
System ERROR:
Incorrect function.

参考我从here获取的zip命令 当我浏览添加引用时,没有任何关于创建一个新的7zip文件来添加文件,所以我想它会自动创建但不太确定。

请指教。
感谢。

2 个答案:

答案 0 :(得分:0)

尝试以下方面的内容:

[string]$Zip = "C:\path to 7zip\7-zip\7z.exe"; 
[array]$args = "a", "-tzip", "-y", "-r", "$arcPath ";

ForEach ( $file in $filesToBackUP )
    { 
         $Zip $args $file;
    }

抱歉,我目前正在移动中,无法对此进行测试。

答案 1 :(得分:0)

在PowerShell 5.0中,有一个示例如下。您可以使用列表替换dir .\dirToZip\* -File | %{ Compress-Archive -Path $_.fullname -DestinationPath .\test.zip -Update }

{{1}}