使用来自 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.exe
和7z.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的主要内容,如果未能解决你的问题,请参考以下文章