【问题标题】:How to download an entire dropbox directory in powershell?如何在powershell中下载整个Dropbox目录?
【发布时间】:2017-08-01 11:45:20
【问题描述】:

我尝试了一个简单的方法:

wget https://www.dropbox.com/sh/dropboxStuff/dropboxStuff?dl=1 -O DirectoryName

但它正在下载一个 zip 文件。

  • 仅使用 powershell 下载和解压缩的最佳方法是什么 命令?
  • 这可以在一行中完成吗?

【问题讨论】:

  • 什么版本的 PowerShell?较新的版本有一个解压缩 zipfile 的 cmdlet,较旧的版本需要对 COM 对象进行一些处理。
  • 为 power shell 和 windows 版本添加了标签。谢谢@alroc

标签: windows powershell windows-10 dropbox powershell-5.0


【解决方案1】:

要在一行中使用 PowerShell 5 的 Expand-Archive cmdlet:

Invoke-WebRequest -Uri https://www.dropbox.com/sh/dropboxStuff/dropboxStuff?dl=1 -O temp.zip; Get-Item temp.zip | Expand-Archive -DestinationPath "FolderName"; Remove-Item temp.zip

也许可以通过使用-PassThruInvoke-WebRequest 传递到Expand-Archive 来做到这一点,但我还不能让它工作。

【讨论】:

    【解决方案2】:

    在 Powershell v5 中

    Expand-Archive c:\a.zip -DestinationPath c:\a
    

    了解你的 PS 版本

    $PSVersionTable.PSVersion 
    

    如果你没有 PS v5

    Add-Type -AssemblyName System.IO.Compression.FileSystem
    function Unzip
    {
        param([string]$zipfile, [string]$outpath)
    
        [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
    }
    
    Unzip "C:\a.zip" "C:\a"
    

    来源:This Question

    【讨论】:

    • wget 是在 powershell 中进行下载的最佳方式吗?如何将下载结果通过管道传输到此命令?
    • @GiulioCaccin Expand-Archive 接受管道输入。所以你可以做Get-Item [zipfile] | Expand-Archive -DestinationPath C:\etc
    • @GiulioCaccin 我建议使用Invoke-WebRequest 而不是wget。默认情况下,wget 是该 cmdlet 的别名,但不应在脚本中使用别名,如果您没有该别名并且您确实在使用 wget,它将是一个外部依赖项,它使您的脚本便携性较差。
    • 谢谢@alroc!如果您使用 oneline 命令编辑响应,我可以将其标记为答案。
    猜你喜欢
    • 2011-02-04
    • 2012-02-21
    • 2013-06-21
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多