Ответ Джеспера показывает, как сделать это так, чтобы это наиболее точно соответствовало тому, как был написан вопрос.
Я предлагаю другое решение: не используйте ftp. FTP не будет обеспечивать безопасность в сети. Это также может быть проблематично с определенными проектами сети, особенно если используется NAT или когда используется брандмауэр. Эти проблемы, вероятно, не будут существовать сейчас, если ручная загрузка по FTP работает нормально, но они могут начать существовать, если кто-то внесет изменения. Например, могут возникнуть проблемы, если вы замените модем DSL другим модемом DSL, который предоставляет другие функции.
Предпочтительным решением является не использовать FTP. То, что вы можете использовать вместо этого, может быть ограничено в зависимости от того, что веб-хостинг предоставляет в качестве опции. Одной из отличных альтернатив является SFTP, реализованный с помощью PSTTP.EXE от PuTTY. Там может быть некоторая двусмысленность, так как есть несколько безопасных вариантов FTP, таких как FTPS. SCP, реализованный с PSCP PuTTY, в некоторых случаях может быть немного проще в использовании, поэтому я предлагаю начать с этого.
Для этого сначала скачайте файлы с сайта загрузки PuTTY-s. http://chiark.greenend.org.uk/~sgtatham/putty/download.html предлагает pscp.exe и аналогичный файл psftp.exe. The.earth.li/~sgtatham/putty/latest/x86/… (для версии 0.63, которая является последней версией на момент написания этой статьи), может быть самым простым для людей, которые предпочитают пройти через простой процесс установки с использованием GUI, в то время как файл putty.zip также содержит putty.exe и pscp.exe и psftp.exe
Первая версия вашего командного файла будет выглядеть примерно так:
C:\Program Files\PuTTY\PSCP.exe -l имя пользователя C:\dir\stuff\to\upload *. * RemoteSever :.
Обратите внимание на период в конце, который указывает место, куда файлы будут идти. Настройте это по мере необходимости.
Как только у вас все получится, вам нужно будет возразить, что пользователь должен ввести пароль. Да, хорошо, это можно решить, но это просто немного больше работы, но обычно это вариант для серверов, которые поддерживают использование PSFTP или PSCP. Возможно, вы захотите использовать PuTTYGen для создания ключа. Сохраните закрытый ключ в формате OpenSSH (не рекомендуется PuTTYGen *).Формат ППК). Этот закрытый ключ должен будет перейти на сервер. Использование PuTTY, вероятно, будет более простым инструментом, позволяющим убедиться, что закрытый ключ установлен там, где он должен быть. Как только закрытый ключ обработан, пакетный файл может быть изменен для использования:
C:\Program Files\PuTTY\PSCP.exe -l имя пользователя -i C:\mykeys\mykey.pub C:\dir\stuff\to\upload *. * RemoteSever :.
Если PSCP работает хорошо, слегка модернизируйте его, попробовав PSFTP.exe. Если это работает, это немного предпочтительнее, поскольку авторы OpenSSH отмечают, что SFTP является более развитым протоколом, чем SCP.
Альтернативой является использование протоколов, отличных от FTP, SFTP или SCP, например HTTP(S). HTTP(S), вероятно, можно автоматизировать с помощью WGET с параметром --post-file = filename, но вам необходимо выяснить, какой URL-адрес используется вашим веб-хостом для разрешения загрузки по HTTP. На самом деле, CURL предпочтительнее WGET. У него более мягкая лицензия, и я считаю, что код также более новый и простой.
Также могут быть доступны другие реализации. WinSCP поддерживает клиента командной строки с именем winscp.com (а также winscp.exe, который предоставляет графический интерфейс). Хост скриптов Windows может использовать HTTP с помощью объекта, встроенного в Microsoft Windows, поэтому нет необходимости загружать исполняемый файл. Опять же, я ссылаюсь на ответ Джеспера как на ответ, который вам может показаться вполне подходящим для вас, и в котором используется программное обеспечение, которое обычно предустановлено в Windows, поэтому не требуется загружать дополнительное программное обеспечение. Держу пари, что есть еще много вариантов ... у вас есть много вариантов, из которых вы можете выбирать.