.net 从FTP服务器下载其名称包含特定字符串的文件

.net 从FTP服务器下载其名称包含特定字符串的文件,.net,powershell,download,ftp,webclient,.net,Powershell,Download,Ftp,Webclient,我没有使用PowerShell的经验,我需要帮助从FTP服务器下载几个具有类似名称的图像。我在这个论坛上找到了很多,我只下载了一张图片。为此,我必须输入文件名 我想选择一个日期,然后下载所有有这个日期的图片并保存在本地文件夹中。 我还想将下载图像的名称保存在一个.txt文件中 那么我如何根据日期下载图片呢 字符串20201009是日期及其后的数字是连续的 我希望你明白我的意思,因为这是我第一次在论坛上写东西 $UserName = "abc" $Password = &quo

我没有使用PowerShell的经验,我需要帮助从FTP服务器下载几个具有类似名称的图像。我在这个论坛上找到了很多,我只下载了一张图片。为此,我必须输入文件名

我想选择一个日期,然后下载所有有这个日期的图片并保存在本地文件夹中。 我还想将下载图像的名称保存在一个.txt文件中

那么我如何根据日期下载图片呢

字符串
20201009
是日期及其后的数字是连续的

我希望你明白我的意思,因为这是我第一次在论坛上写东西

$UserName = "abc"
$Password = "abc"

$RemoteFileName =  "DatenTestKam3_schlecht_20201009_085248_00848.jpg"
$LocalFilePath = "C:\Users\Desktop\PowerShell\$RemoteFileName"

$ServerName = "10.196.195.167/22_test"

$webclient = New-Object System.Net.WebClient

$webclient.Credentials = New-Object System.Net.NetworkCredential($UserName, $Password)

$uri = New-Object System.Uri(“ftp://$ServerName/$RemoteFileName”)

$webclient.DownloadFile($uri, $LocalFilePath)


如果我没弄错你的问题,你想下载所有名称包含“20201009”字符串的文件,对吗

$url = "ftp://ftp.example.com/remote/path/"
$credentials = New-Object System.Net.NetworkCredential("username", "password")
$request = [System.Net.WebRequest]::Create($url)
$request.Credentials = $credentials
$request.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectory
$response = $request.GetResponse()
$reader = New-Object IO.StreamReader $response.GetResponseStream() 
$listing = $reader.ReadToEnd()
$reader.Close()
$response.Close()

$localpath = "C:\Users\Desktop\PowerShell"
$date = "20201009"
$files =
    ($listing -split "`r`n") |
    Where-Object {$_ -like "*$date*"}

$webclient = New-Object System.Net.WebClient 
$webclient.Credentials = $credentials

foreach ($file in $files)
{
    $localfilepath = (Join-Path $localPath $file)
    Write-Host ($file + " => " + $localfilepath)

    $webclient.DownloadFile(($url + $file), $localfilepath)
}

如果您使用:


(我是WinSCP的作者)

如果我正确理解您的问题,您想下载所有名称包含“20201009”字符串的文件,对吗

$url = "ftp://ftp.example.com/remote/path/"
$credentials = New-Object System.Net.NetworkCredential("username", "password")
$request = [System.Net.WebRequest]::Create($url)
$request.Credentials = $credentials
$request.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectory
$response = $request.GetResponse()
$reader = New-Object IO.StreamReader $response.GetResponseStream() 
$listing = $reader.ReadToEnd()
$reader.Close()
$response.Close()

$localpath = "C:\Users\Desktop\PowerShell"
$date = "20201009"
$files =
    ($listing -split "`r`n") |
    Where-Object {$_ -like "*$date*"}

$webclient = New-Object System.Net.WebClient 
$webclient.Credentials = $credentials

foreach ($file in $files)
{
    $localfilepath = (Join-Path $localPath $file)
    Write-Host ($file + " => " + $localfilepath)

    $webclient.DownloadFile(($url + $file), $localfilepath)
}

如果您使用:

(我是WinSCP的作者)