-2

我使用了一个停业的旧程序,它创建了一个文件夹,并在该“根”文件夹内创建了该文件夹内的其他文件夹,它创建了一个运行程序输出的 rar 文件。

Folder

   zipfile


Folder

   zipfile

请注意,根目录内部有 400 多个文件夹,每个文件夹里面都有一个我需要解压缩的 zip 文件。

该文件夹基于它运行的时间,并且该程序在任何地方运行从每分钟 2 次到每分钟 6 次,因此它根据运行时间在“根”文件夹中创建一个新文件夹。

要查看信息,我需要解压缩它在该文件夹中创建的文件。问题,我在一个中心文件夹中有 400 多个文件夹,必须将所有文件都保存到它们当前所在的文件夹中。

我知道 WinRar 有一个 unrar here 功能,并且我生成了一个文本文件,其中包含我需要 unrar 的每个文件夹的目录列表。每行一个文件夹。

基本上我需要一个批处理文件,它将转到每个文件夹,在此处执行 unrar 并转到下一个文件夹。

有什么可用的帮助吗?我在 Win10 Home 系统上,并且注册了 WinRAR 5.80 版本。我不是 Powershell 用户,我从今天开始学习它,但我确实使用 PowerShell 生成了带有目录列表的 txt 文件。

(Get-ChildItem -Recurse -Filter " zip ").FullName | 输出文件 d:\pattern.txt

所以我并不是完全无知。

谢谢你。

响应 Campo,我使用 WinRar 来处理 Zips 以及 Rars,当我安装了 WinRar 时,我发现我不需要一个 zip 提取器。

4

1 回答 1

0

我在评论中询问扩展名的原因是因为您说您已经习惯使用powershell创建文件列表Get-ChildItem,并且想要开始学习它。

正如您所说,您在 Windows 10 中使用 PowerShell,我希望您拥有 PowerShell v5.0+。因此,这是 PowerShell 脚本的单行或直接在 PowerShell 提示符处输入,它应该.zip直接解压缩每个文件,而无需引入第三方实用程序,如 WinRAR。

-Path请根据您的具体位置更改字符串。

Get-ChildItem -Path "C:\Users\Frank\Root" -Filter "*.zip" -File -Recurse | ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath $_.DirectoryName -Force }

您没有说明在解压缩 zip 文件后是否要删除它,因此如果您想要该功能,出于本练习的目的,您可以简单地附加一个删除命令:

Get-ChildItem -Path "C:\Users\Frank\Root" -Filter "*.zip" -File -Recurse | ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath $_.DirectoryName -Force; Remove-Item $_.FullName }

请注意,该示例只是您的起点。当您了解更多信息时,您可以为其添加健壮性,以防止例如在提取失败时删除 zip 文件,以及在出现错误时可能采取的措施等。

于 2020-07-11T22:43:11.297 回答