powershell - 用于处理数千个 zip 文件的 PS 脚本……

好的,所以我很新 - 目前正在学习 Python 和 PowerShell,但我遇到了问题,正在尝试用代码解决它。

我需要一个脚本

  1. 查看文件夹以查找 .zip 文件
  2. Unzip 定位文件(到任何目的地,我可以定义)
  3. 删除已完成的 zip。
  4. 重复步骤 1-3,直到目标中不再有 zip 文件

我试图在 PowerShell 中编写一个简单的循环,但我不知道如何让 Expand-Archive 配合。当我使用 *.zip 通配符作为路径或文字路径时,我将它指向多个文件会很生气。

目的地有数千个文件,而且它们并不小,因此手动解压缩将非常耗时,并且将路径命名为 zip 文件称为五千次只会稍微减少耗时。

回答1

Get-ChildItem 将不起作用。这是因为它必须先构建列表,然后才能开始运行任何操作。通过构建列表,它必须将所有项目放入内存中,然后它可以应用过滤器或执行其他操作。

如果您希望针对大量项目运行它,则需要使用 .net 调用:[System.IO.Directory]::GetFiles() https://stackoverflow.com/questions/45393327/get-childitem-vs-direct-use-of-the-net-frameworks-system-io-directorygetf

这些调用,当通过管道“|”使用其他命令会将项目列表流式传输到命令,并允许您更快地对文件运行一堆过滤器。您仍然需要弄清楚一些事情。

我使用 7zip 命令执行类似于您现在描述的操作:https://jasonduffett.net/post/5103879646/using-7zip-from-powershell#:%7E:text=One%20solution%20is%20to%20use%20the%20excellent%207-zip,-Path%20%28Split-Path%20-parent%20%24MyInvocation.MyCommand.Definition%29%20-ChildPath%20%227z.exe%22%20if%20%28%21

相似文章

最新文章