使用来自 Textfile 的文件创建 7-Zip 存档 - Powershell

Posted

技术标签:

【中文标题】使用来自 Textfile 的文件创建 7-Zip 存档 - Powershell【英文标题】:Create 7-Zip Archive with Files from Textfile - Powershell 【发布时间】:2016-02-26 10:51:05 【问题描述】:

我正在编写一个小型 Powershell 应用程序,供我们的支持者存档文件。但现在我因为 7zip 选项卡住了。

用户可以选择日期和目录,代码选择在该日期之前修改的所有文件。

现在我想将所有这些文件存储在 Zip 存档中,但我不明白 :(

    $path = Read-Host "please select path : "

    Set-Alias sz "C:\Program Files\7-Zip\7zG.exe"


    $bis = Read-Host "please select date (dd.mm.yyyy): "
    $bisdate = [datetime]::ParseExact($bis,'dd.MM.yyyy',$null)

    $files = Get-ChildItem $path | Where $_.LastWriteTime -lt $bisdate  |     ForEach-Object  $_.FullName > C:\Test\list.txt 

我找到了几个 7zip 操作的示例,但找不到针对这种情况的解决方案。有没有像 Bash 这样的选项?类似的东西?

    zip archive -@ < out.txt

【问题讨论】:

顺便说一句。对不起我的英语不好;) 【参考方案1】:

如果您在指定目录中有7z.exe7z.dll,则可以使用此代码创建存档:

foreach ($filePath in [System.IO.File]::ReadAllLines("c:\Test\list.txt"))

    $archParams += "`"" + $filePath + "`" "

$archParams = "a `"C:\Test\list.zip`" " + $archParams

Start-Process -FilePath "C:\Program Files\7-Zip\7z.exe" -Wait -ArgumentList $archParams

qoutes 的转义是必要的,因为文件路径中有space-symbol

【讨论】:

这将创建一个包含 list.txt 的 Zip 文件。我需要归档 list.txt 文件中的 listet 文件。 我更改了代码以添加以存档所有文件,其完整路径位于 list.txt 这行得通!非常感谢你!! :D 不幸的是,这只会创建一个 Zip ......如果我想创建另一个它不起作用。重新启动后它再次工作一次..我必须杀死一个进程还是什么?提前谢谢 :) 编辑:关闭 Powershell ISE 并再次打开也可以 Powershell ISE 中,您需要手动清理$acrhParams,因为Powershell ISE 在重新运行脚本之前不要重新创建变量。我用PowerGUI,没有这个问题。【参考方案2】:

您可以使用“7za”。它是一个 7zip 控制台应用程序。您使用谷歌找到它。 将它放在一个公共路径中,即在你的路径变量中。

这是一个例子:

7za a -tzip "C:temp\myzip.zip" "C:\temp\Client\*.*"

【讨论】:

这会归档目录 C:\temp\Client\ 中的所有文件。那不是我需要的。我必须建立一个档案,它只包含我的文本文件中的文件列表...

以上是关于使用来自 Textfile 的文件创建 7-Zip 存档 - Powershell的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 Python 的 7-zip cmd 行和子进程

7-Zip 命令在 Windows 上创建和提取受密码保护的 ZIP 文件? [关闭]

创建 7-zip 安装程序包时出错

7-zip SFX 配置问题 [关闭]

计算来自 RDD 的不同用户

7-Zip 文件夹中不存在 7zS.sfx