Как удалить все файлы из папки FTP с помощью пакета

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

До сих пор я пытался использовать команду "mdel .", См. Код ниже:

@echo off
echo user ftpUser> ftpcmd.dat
echo Password>> ftpcmd.dat
echo cd /tst/>>ftpcmd.dat
echo binary>> ftpcmd.dat
echo prompt n>> ftpcmd.dat
echo mget *.*>> ftpcmd.dat
echo mdel *.*>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat 77.99.999.999
del ftpcmd.dat

Для этого решения я заметил, что если я использую команду "удалить" и указываю файл, он работает. Примерно так: echo delete 312312312.csv >> ftpcmd.dat

Но по какой-то причине, используя mdel(как в примере), это не так.

Знаете ли вы лучший способ сделать это работает?

Спасибо

2 ответа

Решение

mdel Команда должна перечислить файлы в удаленном каталоге. Проблема в том, что в Windows встроен ftp.exe поддерживает только активный режим FTP. В этом режиме серверу необходимо открыть входящее соединение с вашей машиной, передать список, который по умолчанию блокируется брандмауэром Windows или любым другим брандмауэром / прокси /NAT на пути между вами и сервером. Это делает ftp.exe самый бесполезный в наши дни.

Подробности смотрите в моей статье о конфигурации сети для активного режима FTP.


Используйте любой другой сторонний FTP-клиент. Большинство поддерживают пассивный режим, в котором нет подобных проблем.

Как вы узнали сами, одним из таких клиентов является WinSCP.

Используя сценарии WinSCP, ваш командный файл будет выглядеть так:

@echo off

winscp.com /log=ftp.log /command ^
    "open ftp://ftpUser:Password@77.99.999.999/" ^
    "cd /tst" ^
    "get *" ^
    "rm *" ^
    "exit"

Хотя, если поддерживается сервером, рассмотрите возможность использования безопасного FTP через TLS / SSL, заменив ftp:// с ftpes://,

См. Также руководство по преобразованию сценария Windows FTP в сценарий WinSCP.

(Я автор WinSCP)

Я нашел решение этой проблемы: http://winscp.net/eng/docs/scriptcommand_rm

Используя это программное обеспечение, я смог получить и удалить несколько файлов одновременно, и код теперь выглядит так:

open ftp://user:Password@77.XX.XXX.XXX
cd /tst/
get *.* d:\www\*.bak
rm *.*
EXIT

Все равно, спасибо за помощь.

@Martin Prikryl Спасибо за программное обеспечение и объяснение.

С уважением!

Другие вопросы по тегам