使用PowerShell读取下载文件的文件名

列昂尼达斯·费特

我有一个包含多个URL的文件,如下所示:

http://ligman.me/1HCDxl9
http://ligman.me/1HCCCRP
http://ligman.me/1HCCCRP
http://ligman.me/1H4Q0e5
http://ligman.me/1H4Q0e5
http://ligman.me/1JI6V77
http://ligman.me/1JI6V77
http://ligman.me/1CSMobd
http://ligman.me/1CSMobd

我想编写一个PowerShell脚本,它将逐行读取此文件,然后在每行(URL)后面下载文件。到目前为止,我已经设法使用以下脚本下载文件:

$reader = [System.IO.File]::ReadLines("C:\Temp\Ebooks\ebooks.txt") | Where-Object { $_ -ne '' }
$targetDir = "C:\Temp\Ebooks\"
$wc = New-Object System.Net.WebClient

foreach($file in $reader) {    
    $sourceFileName = $file.SubString($file.LastIndexOf('/')+1) + ".pdf" 
    $targetFileName = $targetDir + $sourceFileName
    $wc.DownloadFile($file, $targetFileName)
    Write-Host "Downloaded $file successfully to directory $targetDir"
}

我的问题是文件名。现在,我只能将它们另存为PDF,但有时文件不是PDF文件,而是DOCX或XLSX。另外,如果它们没有命名为1225DID或13DChwr,那将是很好的选择。基本上,我仍然需要读取实际的文件名,然后使用该名称保存下载的文件。

我怎样才能做到这一点?

编辑:这适用于获取实际的文件名,但是当我尝试打开文件时,我得到一个错误,提示它们不是PDF或已损坏(前提是我尝试使用Foxit Reader打开PDF文件)

$reader = [System.IO.File]::ReadLines("C:\Temp\Ebooks\ebooks.txt") | Where-Object { $_ -ne '' }
$targetDir = "C:\Temp\Ebooks\"
$wc = New-Object System.Net.WebClient

$reader | %{    
    $uri = $_
    $request = Invoke-WebRequest -Uri $uri -MaximumRedirection 0 -ErrorAction Ignore   

    $sourceFileName = $request.Headers.Location.SubString($request.Headers.Location.LastIndexOf('/') + 1) 
    $targetFileName = $targetDir + $sourceFileName
    $wc.DownloadFile($file, $targetFileName)
    Write-Host "Downloaded $file successfully to directory $targetDir"
}
戴维·布拉本特

使用提琴手,似乎在后台进行了重定向。

如果执行以下脚本,则会在提供的URL后面获得“真实” URL。

$links = @(
    "http://ligman.me/1HCDxl9",
    "http://ligman.me/1HCCCRP",
    "http://ligman.me/1H4Q0e5",
    "http://ligman.me/1JI6V77",
    "http://ligman.me/1CSMobd"
)

$links | %{
    $uri = $_

    $request = Invoke-WebRequest -Uri $uri -MaximumRedirection 0 -ErrorAction Ignore
    Write-Host $request.Headers.Location
}

该脚本将产生以下列表,您可以在其中找到文档名称及其扩展名。

http://download.microsoft.com/download/4/2/f/42f9b256-977e-4792-a9eb-d490516d4468/AF103733558_en-us_access2013quickstartguide.pdf
http://download.microsoft.com/download/6/7/5/675609de-a32b-44d4-ace6-86305afb808f/AF103733448_en-us_word2013quickstartguide.pdf
http://download.microsoft.com/download/2/8/7/28747b20-70b0-4003-b82a-5ab0d222bbd6/AF103733495_en-us_publisher2013quickstartguide.pdf
http://download.microsoft.com/download/e/6/f/e6fc74dc-9f0d-4e6c-bbcc-6855e4d7a78c/AF103733479_en-us_project2013quickstartguide.pdf
http://download.microsoft.com/download/c/e/b/ceb742d6-bc1f-4447-ad06-b0842338dd8c/AF103733547_en-us_onenote2013quickstartguide.pdf

这是下载适用于我的文件的版本:

$links | %{
    $uri = $_

    $request = Invoke-WebRequest -Uri $uri -MaximumRedirection 0 -ErrorAction Ignore
    $location = $request.Headers.Location
    $output = "D:\temp\" + $location.SubString($location.LastIndexOf('/') + 1)

    Invoke-WebRequest -Uri $location -OutFile $output
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用URL /标题文件名的PowerShell Core下载文件

来自分类Dev

下载文件,文件名

来自分类Dev

下载文件,文件名

来自分类Dev

从NSURLSession下载文件名

来自分类Dev

如何从iOS中的路径读取下载文件

来自分类Dev

使用熊猫读取下载的HTML文件

来自分类Dev

使用ServiceStack HttpResult下载文件:如何为下载的内容指定文件名?

来自分类Dev

下载文件时如何设置文件名?

来自分类Dev

如何下载文件名已更改的文件?

来自分类Dev

下载文件时不知道文件名

来自分类Dev

使用 javascript 变量作为文件名以使用 href 下载文件

来自分类Dev

使用Java下载文件时如何获取原始文件名

来自分类Dev

如何在url中传递长文件名并使用php函数下载文件?

来自分类Dev

使用FtpWebRequest下载文件时获取文件名而不是内容

来自分类Dev

c#尝试使用WebClient下载文件名中包含特殊字符的文件

来自分类Dev

使用ftplib下载文件名中带有空格的文件

来自分类Dev

在FTP中使用正则表达式获取文件名以下载文件

来自分类Dev

使用FtpWebRequest下载文件时获取文件名而不是内容

来自分类Dev

使用php下载文件,文件存储在文件夹中,文件名存储在数据库中

来自分类Dev

DataTables下载文件名出现问题

来自分类Dev

Chrome嵌入式PDF下载文件名

来自分类Dev

expressjs下载文件名utf-8

来自分类Dev

如何在C#中下载文件名?

来自分类Dev

vertx Java 下载文件名特殊字符

来自分类Dev

如何使用PowerShell的FtpWebRequest类从FTP服务器下载文件名中包含井号/井号'#'的文件

来自分类Dev

使用PowerShell从SharePoint Online下载文件

来自分类Dev

在Powershell中使用密码下载文件

来自分类Dev

使用 Powershell 从 OneDrive 下载文件

来自分类Dev

从powershell中的部分读取文件名

Related 相关文章

  1. 1

    使用URL /标题文件名的PowerShell Core下载文件

  2. 2

    下载文件,文件名

  3. 3

    下载文件,文件名

  4. 4

    从NSURLSession下载文件名

  5. 5

    如何从iOS中的路径读取下载文件

  6. 6

    使用熊猫读取下载的HTML文件

  7. 7

    使用ServiceStack HttpResult下载文件:如何为下载的内容指定文件名?

  8. 8

    下载文件时如何设置文件名?

  9. 9

    如何下载文件名已更改的文件?

  10. 10

    下载文件时不知道文件名

  11. 11

    使用 javascript 变量作为文件名以使用 href 下载文件

  12. 12

    使用Java下载文件时如何获取原始文件名

  13. 13

    如何在url中传递长文件名并使用php函数下载文件?

  14. 14

    使用FtpWebRequest下载文件时获取文件名而不是内容

  15. 15

    c#尝试使用WebClient下载文件名中包含特殊字符的文件

  16. 16

    使用ftplib下载文件名中带有空格的文件

  17. 17

    在FTP中使用正则表达式获取文件名以下载文件

  18. 18

    使用FtpWebRequest下载文件时获取文件名而不是内容

  19. 19

    使用php下载文件,文件存储在文件夹中,文件名存储在数据库中

  20. 20

    DataTables下载文件名出现问题

  21. 21

    Chrome嵌入式PDF下载文件名

  22. 22

    expressjs下载文件名utf-8

  23. 23

    如何在C#中下载文件名?

  24. 24

    vertx Java 下载文件名特殊字符

  25. 25

    如何使用PowerShell的FtpWebRequest类从FTP服务器下载文件名中包含井号/井号'#'的文件

  26. 26

    使用PowerShell从SharePoint Online下载文件

  27. 27

    在Powershell中使用密码下载文件

  28. 28

    使用 Powershell 从 OneDrive 下载文件

  29. 29

    从powershell中的部分读取文件名

热门标签

归档