递归解压缩文件所在的位置,然后删除存档

6 compression zip windows-7 7-zip

我对我使用的备份软件进行了设置。通常我会将来自网络共享的文件加载到备用驱动器中,压缩到 zip 文件夹中,然后发送到异地集线器。

相反发生的是压缩首先发生,所以现在我有一个充满我原始目录的网络共享,但所有文件都已压缩到它们自己的 zip 文件夹中。

有没有一种快速的方法可以解压缩服务器上所有 zip 文件夹所在的位置,然后删除 ZIP 文件?我有 7-zip,它似乎可以完成这项工作。

到目前为止我尝试过的

我搜索了 ZIP 文件,然后从 7zip 菜单中选择了“在此处提取”,但这会将 ZIP 文件提取到我碰巧右键单击的任何文件夹中,而不是它们实际所在的位置。我打开了文件版本控制,但我拥有的最新备份过去太远了。

Mar*_*tin 5

一个快速而肮脏的 powershell 脚本来完成您需要的操作,您需要 7zip 命令行版本。只需更改脚本中的两条路径并先进行测试即可,目前我自己没有机会这样做。

$folderPath="X:\Test";

Get-ChildItem $folderPath -recurse | %{ 

    if($_.Name -match "^*.`.zip$")
    {
        $parent="$(Split-Path $_.FullName -Parent)";    
        write-host "Extracting $($_.FullName) to $parent"

        $arguments=@("e", "`"$($_.FullName)`"", "-o`"$($parent)`"");
        $ex = start-process -FilePath "`"C:\Path\To\7zip\7z.exe`"" -ArgumentList $arguments -wait -PassThru;

        if( $ex.ExitCode -eq 0)
        {
            write-host "Extraction successful, deleting $($_.FullName)"
            rmdir -Path $_.FullName -Force
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,只需将第一个 if 条件更改为: if(($_.Name -match "^*.`.zip$") -and ($_.Name -notmatch "nameToIgnore")) (2认同)