我想在FTP服务器的特定path中获取最新更新文件夹的名称

使用这个命令,我可以在Unix中获得最新的更新文件夹

ls -t1 | head -1 

但是我怎样才能从Windows中得到相同的FTP服务器?

我想在FTP服务器的特定path中获取最新更新文件夹的名称。 任何人都可以帮忙吗?

使用Windows shell命令没有简单的方法。

您可以:

  • 使用ftp.exe执行ls /path c:\local\path\listing.txt将目录列表保存到文本文件。
  • 退出ftp.exe
  • 解析列表并找到最新的文件。 Windows shell命令不是一件容易的事情。

使用PowerShell脚本会更容易一些。

你可以使用FtpWebRequest类 。 虽然它没有一个简单的方法来检索结构化的目录列表。 它只提供ListDirectoryDetailsGetDateTimestamp方法。

请参阅检索文件的创建日期(FTP) 。


或者使用第三方库进行任务。

例如,使用WinSCP .NET程序集,你可以这样做:

 param ( $sessionUrl = "ftp://user:mypassword@example.com/", $remotePath = "/path" ) # Load WinSCP .NET assembly Add-Type -Path "WinSCPnet.dll" # Setup session options $sessionOptions = New-Object WinSCP.SessionOptions $sessionOptions.ParseUrl($sessionUrl) # Connect $session = New-Object WinSCP.Session $session.Open($sessionOptions) # Get list of files in the directory $directoryInfo = $session.ListDirectory($remotePath) # Select the most recent file $latest = $directoryInfo.Files | Where-Object { -Not $_.IsDirectory } | Sort-Object LastWriteTime -Descending | Select-Object -First 1 # Any file at all? if ($latest -eq $Null) { Write-Host "No file found" } else { Write-Host "The latest file is $latest" } 

查看完整示例下载最新的文件 。

(我是WinSCP的作者)