2017-04-18 95 views
2

我第一次使用PowerShell執行一項小任務。我有一個文件文件在磁盤上與文件下載url links.Text文件有幾個鏈接逐行。我想下載到磁盤。我嘗試使用下面的代碼。

$filepath = "C:\Users\User\Desktop\filelinks.txt" 
$files = Get-Content $filepath 
$i=0 

foreach($fileurl in $files){ 
$webclient = New-Object System.Net.WebClient 
$file = "C:\Users\User\Desktop\"+$i+".csv" 
$webclient.DownloadFile($fileurl,$file) 
$i++ 
} 

但我得到以下錯誤

Exception calling "DownloadFile" with "2" argument(s): "Illegal characters in path." 
At line:8 char:1 
+ $webclient.DownloadFile($fileurl,$file) 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
+ FullyQualifiedErrorId : ArgumentException 

在文本文件中的鏈接

"http://www.football-data.co.uk/mmz4281/1617/I1.csv" 
"http://www.football-data.co.uk/mmz4281/1617/E1.csv" 
"http://www.football-data.co.uk/mmz4281/1617/E2.csv" 
"http://www.football-data.co.uk/mmz4281/1617/SP1.csv" 
"http://www.football-data.co.uk/mmz4281/1617/D1.csv" 

我應該如何通過正確的論點在這裏

回答

2

它看起來像網址在您的文件被包含在"..." - a實際雙引號,當與Get-Content一起閱讀時,成爲文字部分行讀 - 這不是意圖(嵌入式"字符。在URL中是不允許的,這就解釋了你看到的錯誤)。

  • 或者:通過從每行去除包圍"實例更新文件C:\Users\User\Desktop\filelinks.txt

  • 或者:具有與其Get-Content讀取線之後取出包圍"實例:

    • $fileurl = $fileurl -replace '^"(.*)"$', '$1'