我想计算远程文件夹中的所有文件。我找到了“官方”WinSCP脚本,它列出了文件夹中的每个文件。但我想算一下,然后将结果保存到变量中。什么是最简单的方法?
try
{
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "user",
Password = "mypassword",
SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx..."
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
RemoteDirectoryInfo directory =
session.ListDirectory("/subdoms/admin/");
foreach (RemoteFileInfo fileInfo in directory.Files)
{
Console.WriteLine(
"{0} with size {1}, permissions {2} and last modification at {3}",
fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions,
fileInfo.LastWriteTime);
}
}
return 0;
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e);
return 1;
}
session.EnumerateReportFiles
见How to get the files of remote directory using a pattern with C# and WinSCP
$files =
$session.EnumerateRemoteFiles(
$remotePath, $wildcard, [WinSCP.EnumerationOptions]::None)
var filecount = $files.Count();
使用EnumerateRemoteFiles并在获得主父目录的所有文件信息后获取计数。
foreach (RemoteFileInfo fileInfo in directory.Files)
{
Console.WriteLine("{0} with size {1}, permissions {2} and last modification at {3}",
fileInfo.Name, fileInfo.Length, fileInfo.FilePermissions,
fileInfo.LastWriteTime);
Console.WriteLine(fileInfo.FullName);
string FilePath = fileInfo.FullName;
if (session.FileExists(FilePath))
{
Console.WriteLine("Folder exists");
var a = session.EnumerateRemoteFiles(FilePath, null,
EnumerationOptions.AllDirectories);
Console.WriteLine(a.Count());
}
}