Вот что я хочу сделать в первую очередь с точки зрения непрофессионала: я хочу получить файлы (а может быть, только некоторые файлы). Если есть подкаталоги, я хочу также получить файлы в этих подкаталогах. Я использую Visual C ++ / CLI для программирования, поэтому использую сборку .net.
В WinSCP это использовать Session.SynchronizeDirectories()
. Последний параметр - это TransferOptions
(класс), и он обычно имеет значение null. В основном это означает, что все файлы будут перенесены. Если я создам объект и установлю свойство string FileMask
, я смогу передавать только определенные файлы.
Поэтому я меняю пример программы WinSCP C # на:
using (Session session = new Session())
{
// Will continuously report progress of synchronization
session.FileTransferred += FileTransferred;
// Connect
session.Open(sessionOptions);
// Create a TransferOptions object
TransferOptions tro = new TransferOptions();
tro.FileMask = "*.txt";
tro.TransferMode = TransferMode.Automatic;
// Synchronize files
SynchronizationResult synchronizationResult;
synchronizationResult =
session.SynchronizeDirectories(
SynchronizationMode.Local, @"C:\temp\win", "/C/Users/peter/Documents/WinSCP5.5.1/",
false, false, SynchronizationCriteria.Time, tro);
// Throw on any error
synchronizationResult.Check();
}
Когда я запускаю программу, все в текущем каталоге и подкаталогах переносится!
Думаю, что могу ошибаться, указывая эти параметры. Пользуюсь программой WinSCP. (См. Изображение на странице диалогового окна настроек передачи веб-сайта WinSCP.)
Все параметры ясны, за исключением того, что я ввожу следующее для маски файла: *.txt
Я нажимаю кнопку ОК, чтобы начать передачу. У меня включен предварительный просмотр. И я вижу только выбранные текстовые файлы, даже тот, который находится в подкаталогах.
Так программа WinSCP работает, а API - нет?
[Edit] Я использую версию 5.5.2 сборки WinSCP.
Session.SessionLogPath
и поделитесь журналом. Например, используя pastebin.com. - person Martin Prikryl   schedule 16.04.2014false
вdelete
в коде. Есть и разные пути. Вам трудно помочь, если вы не поделитесь соответствующим журналом и кодом. - person Martin Prikryl   schedule 16.04.2014SynchronizeDirectories
: без удаления и без зеркала. - person user3454439   schedule 16.04.2014synchronize local -nopermissions -preservetime -transfer="automatic" -filemask="*.txt" -criteria="time" -- "C:\temp\win" "/C/Users/peter/Documents/WinSCP5.5.1/"
- person Martin Prikryl   schedule 16.04.2014TransferOptions
(по умолчанию используется двоичный режим, а также, очевидно, пустая маска файла). Вы уверены, что логи от ТОЧНОГО! код вы включили в вопрос? - person Martin Prikryl   schedule 16.04.2014Session.SynchronizeDirectories
в базовую команду сценария. - person Martin Prikryl   schedule 16.04.2014