将所有文件从FTP上的特定文件夹下载到本地文件夹

贾斯迪普

我正在尝试下载位于FTP站点上特定文件夹内的所有文件。该文件夹被称为"In"(如示例代码所示),并且包含许多.txt文件。

当我运行以下代码时,它列出了位于FTP文件夹中的四个.txt文件"ftp3.example.com/Jaz/In/",但是它没有将它们复制到目标文件夹中"C:\Users\Jasdeep\Destination\"

注意:此列表将显示一秒钟,然后关闭PowerShell。

请查看显示输出列表的屏幕截图 清单范例

我已授予FTP站点上的文件夹和内容的完全权限。

有人可以告诉我我要去哪里错吗?

$ftp = "ftp://ftp3.example.com/Jaz/In/" 
$user = 'username' 
$pass = 'password'
$folder = "/"
$target = 'C:\Users\Jasdeep\Destination'

$credentials = new-object System.Net.NetworkCredential($user, $pass)

function Get-FtpDir ($url,$credentials) {
    $request = [Net.WebRequest]::Create($url)
    $request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
    if ($credentials) { $request.Credentials = $credentials }
    $response = $request.GetResponse()
    $reader = New-Object IO.StreamReader $response.GetResponseStream() 
    $reader.ReadToEnd()
    $reader.Close()
    $response.Close()
}

$folderPath= $ftp + "/" + $folder + "/"

$Allfiles=Get-FTPDir -url $folderPath -credentials $credentials
$files = ($Allfiles -split "`r`n")

$files 

$webclient = New-Object System.Net.WebClient 
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass) 
$counter = 0
 foreach ($file in ($files | where {$_ -like "*.*"})){
    $source=$folderPath + $file  
    $destination = $target + $file 
    $webclient.DownloadFile($source, (Join-Path $target $file))

    $counter++
    $counter
    $source
}

先感谢您!

马丁·普里克里(Martin Prikryl)

您的代码对我有用。但是URL中的斜杠太多,因此也许您的特定服务器无法处理该斜杠。

您的下载网址就像

ftp://ftp3.example.com/Jaz/In////test2.txt

将代码更改为:

$folderPath = "ftp://ftp3.example.com/Jaz/In/"

第二个问题是:

$files = ($Allfiles -split "`r`n")

您依靠服务器返回带有CR + LF EOL的列表。仅当您使服务器使用ASCII模式时,这才是正确的:

$request = [Net.WebRequest]::Create($url)
$request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
$request.UseBinary = $False

或者,作为特定于您的特定FTP服务器的快速技巧,请仅使用LF:

$files = ($Allfiles -split "`n")

在任何情况下,“列表都会显示一秒钟,然后Powershell关闭。” 表示您并未真正调试问题。从现有cmd.exe或PowerShell控制台窗口运行脚本,以查看其完整输出,包括任何错误。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python将所有文件从带日期的SFTP文件夹下载到本地文件夹

Powershell代码将Blob内容的所有子文件夹下载到本地到单个文件夹

将文件夹下载到FileSystemStorage

使用c#将文件列表从ftp下载到本地文件夹?

仅使用PowerShell将新文件从FTP目录下载到本地文件夹

使用python将文件下载到特定文件夹

将文件和文件夹从Google存储桶下载到本地文件夹

如何使用WinSCP命令行从FTP将图像下载到本地文件夹

如何从远程(openshift)将文件/文件夹下载到本地系统

从共享的Google云端硬盘文件夹下载所有文件夹

如何删除除父文件夹下的某些特定文件夹以外的所有文件

将文件从Button链接下载到C驱动器上的特定文件夹

从VB.NET的FTP文件夹下载所有文件和子目录

PhoneGap将图像下载到特定文件夹

如何将 uber jar 依赖项下载到特定的本地位置/文件夹?

使用SSH将文件从文件夹移动到远程服务器上的文件夹,而无需将文件下载到本地计算机

将文件和文件夹推送到ftp上的特定文件夹

直接从URL将文件下载到本地文件夹或远程服务器中的文件夹

如何使用Wget从URL将所有图像下载到单个文件夹中?

Python脚本,使用BeautifulSoup将网站上的所有图像下载到指定的文件夹

有什么方法可以将所有文件复制到同一父文件夹下的一个特定子文件夹?

spring boot如何将s3文件夹中的所有文件下载到本地目录?

有什么更快的方法可以将多个文件从s3下载到本地文件夹?

从Dropbox上的公共共享文件夹和子文件夹下载图像

如何将文件从s3服务下载到本地文件夹

无法将文件下载到SMB共享文件夹

如何选择位于文件夹或子文件夹下的所有js文件

文件夹下载为ftp中的文件

将文本附加到特定文件夹下的所有文件