Akshay Gate Ответов: 1

Как я могу скопировать файл из локальной папки на FTP-сервер


Привет, у меня есть текстовый файл на моем локальном диске, и я хотел скопировать этот файл на FTP-сервер, если он успешно скопирован, то файл должен переместиться в другую папку под названием "папка резервного копирования", а если он не будет скопирован, то файл должен переместиться в "папку ошибок" на том же диске, не могли бы Вы помочь мне выйти из этого?

Что я уже пробовал:

Я пытался, но ничего не вышло. Поскольку я могу только скопировать файл с локального диска на FTP-сервер, но я не могу сделать резервную копию скопированного файла, поэтому не могли бы вы мне помочь

1 Ответов

Рейтинг:
0

Jochen Arndt

Это зависит от того, какое приложение вы используете для загрузки файлов по FTP. Некоторые из этих приложений могут быть написаны по сценарию или поддерживать загрузку с помощью одного вызова командной строки. Затем вызовите такой скрипт / командную строку из пакетного (Windows) или shell (Linux) скрипта, проверьте возвращаемое значение и действуйте соответственно (переместите файл).

Для WinSCP это хорошо документировано примерами: Автоматизировать передачу файлов (или синхронизации) к серверу FTP или SFTP :: помощью WinSCP[^]. Смотрите там последний раздел Проверка результатов скрипта например пакетный файл, в котором вам нужно только заменить программа sendmail звонки по телефону move команды и использовать соответствующий WinSCP файл сценария, как описано также на этой странице.


Akshay Gate

Я хочу сделать этот общий процесс с помощью SQL...

Jochen Arndt

Затем вы должны указать, какой компонент database engine вы используете и как вы фактически загружаете файл.

Но это похоже на мое решение при создании командной оболочки и выполнении команды (которая, вероятно, является сценарием оболочки):
Просто получите возвращаемое значение в вашей хранимой процедуре SQL.

Например, при использовании T-SQL с xp_cmdshell:
DECLARE @result int;
EXEC @result = xp_cmdshell @cmd;
IF (@result = 0)
PRINT 'Success'
ELSE
PRINT 'Failure';

Просто выполните дополнительные команды оболочки вместо печати, чтобы переместить файл.

Akshay Gate

Объявить @CopyFromFTPScriptPath VARCHAR(500)
ОБЪЯВИТЬ @CMD VARCHAR(5000)
Объявить @RetVal int
SET @CopyFromFTPScriptPath = ( выберите значение 1 из AppConfig, где ConfigId= 41 )



--********************************Копирование файлов с FTP *********************************
Создать таблицу #tempfile (fileuploaded VARCHAR(8000))
SET @CMD="
SET @cmd = 'ftp.exe -i -s:' + @CopyFromFTPScriptPath
Вставить в #tempfile
СТАРПОМА МАСТЕР.ДБО.процедуры xp_cmdshell @ЦМД
выберите * из #tempfile
Усечение таблицы #tempfile

Я использую этот скрипт для копирования файла с локального диска на FTP, теперь я хочу знать, успешно ли скопирован мой файл или нет, если он успешно скопирован, то этот файл должен переместиться в другую папку того же диска, то есть в "папку BK", или в случае, если он не сможет скопировать файл, то этот файл должен переместиться в "папку ошибок" того же диска.

Не могли бы вы помочь мне решить эту проблему??

Заранее спасибо.

Jochen Arndt

Проверьте документацию вашего используемого FTP приложения ftp.exe о возвращаемом значении. Затем получите возвращаемое значение, как показано в моем приведенном выше комментарии. Если FTP-приложение не предоставляет возвращаемое значение при сбое используемой команды, необходимо использовать другое FTP-приложение.