Как удалить все файлы из папки 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 Спасибо за программное обеспечение и объяснение.
С уважением!