Показать полную графическую версию : [решено] Удаление каталогов на FTP из батника
shraybikus
22-04-2009, 14:49
Помогите пожалуйста очистить каталог FTP. Нужно его очистить вместе со всеми подкаталогами.
mdelete * чистит всё содержимое подкаталогов, а надо грохнуть сами подкаталоги (их имена всё время разные). А для rmd нужно конкретные имена подкаталогов указывать, по маске он не работает.
для rmd нужно конкретные имена подкаталогов указывать, по маске он не работает »можно через файл:
- выполнить DIR в текстовый файл;
- отобрать из текста имена каталогов;
- отфильтровать нужные через FindStr;
- сформировать конфиг и запустить RmDir
для конкретики нужен формат вывода DIR - он зависит от движка FTP-сервера
shraybikus
23-04-2009, 09:16
Я сделал dir, но есть ещё ls, его, наверно проще парсить:
ftp> Connected to *.*.*.*♪
open *.*.*.*
220 Microsoft FTP Service
ftp> user ***
331 Password required for ***
230 User *** logged in.
ftp> cd ..
250 CWD command successful.
ftp> cd POST_MONEY_TRANSFER\Download
250 CWD command successful.
ftp> Local directory now D:\GATEWAY\Gate_PP_mailbox.♪
ftp> lcd D:\GATEWAY\Gate_PP_mailbox
binary
200 Type set to I.
ftp> Interactive mode Off .♪
ftp> prompt
dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
04-21-09 04:52PM <DIR> 171108_oplata♪
04-21-09 04:52PM <DIR> 181108_oplata♪
04-21-09 04:52PM <DIR> 191108_oplata♪
226 Transfer complete.
ftp: 162 bytes received in 0,00Seconds 162000,00Kbytes/sec.♪
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
171108_oplata♪
181108_oplata♪
191108_oplata♪
226 Transfer complete.
ftp: 45 bytes received in 0,00Seconds 45000,00Kbytes/sec.♪
ftp> bye
221
Очень нужна конкретика, помогите, пожалуйста.
есть ещё ls »
ls не отличает каталог от файла, к тому же он у меня почему-то выдает только файлы :dont-know
пример для каталогов, имя которых начинается на "MISC":
@Echo Off
:: ~Параметры соединения
Set $Host=ftp.microsoft.com
Set $User=anonymous
Set $Pass=user@mail.ru
Set $Root=.
:: ~Временные файлы
Set $FFtp=%~dpn0.cfg
Set $FDir=%~dpn0.dir
Set $FTmp=%~dpn0.tmp
If Exist %$FDir% DEL %$FDir%
:: Готовим CFG-файл для FTP:Dir
Echo %$User%>"%$FFtp%"
Echo %$Pass%>>"%$FFtp%"
Echo dir %$Root% "%$FTmp%">>"%$FFtp%"
Echo bye>>"%$FFtp%"
:: Выполняем запрос и формируем список всех каталогов
FTP -s:"%$FFtp%" %$Host%
For /F "Tokens=3* UseBackQ Delims= " %%i In ("%$FTmp%") Do If /I "%%i"=="<DIR>" Echo %%j>>"%$FDir%"
:: Готовим CFG-файл для FTP:RmDir
Echo %$User%>"%$FFtp%"
Echo %$Pass%>>"%$FFtp%"
For /F "Delims=" %%i In ('FindStr /IBRC:"MISC" "%$FDir%"') Do Echo rmdir "%%i">>"%$FFtp%"
Echo bye>>"%$FFtp%"
:: Выполняем удаление по списку
FTP -s:"%$FFtp%" %$Host%
P.S. формат шаблонов FindStr отличатся от обычных, смотрите справку
shraybikus
23-04-2009, 12:13
формат шаблонов FindStr отличатся от обычных, смотрите справку »
прибил два ключа, оставил только IC, а то не попадали каталоги в список. Но есть затык в виде пробелов на конце имён каталогов:
rmdir "171108_oplata "
rmdir "181108_oplata "
rmdir "191108_oplata "
соответственно rmd не отрабатывает, каталога нету такого говорит.
И ещё, можно ли как-то вообще иключить маску "MISC"? Мне точно неизвестно, как будут называться каталоги.
затык в виде пробелов на конце имён каталогов »исправил
можно ли как-то вообще иключить маску "MISC"? Мне точно неизвестно, как будут называться каталоги »в смысле удалять ВСЕ каталоги?.. замени "MISC" на ".*"
shraybikus
23-04-2009, 13:41
Отлично!!!
Я только добавил Echo cd %$Root% >>"%$FFtp%" в CFG-файл для FTP:RmDir и всё взлетело!!!
Мегареспектище тебе, мегагуру скриптов и повелитель батников!!!
У меня не удаляются все файлы и каталоги на сервере, выдает ошибку:
C:\Documents\bat>ftp_del.bat
Связь с ftp.narod.ru.
220 first-ftp.narod.ru (Libra FTP daemon 0.17 20100219)
Пользователь (ftp.narod.ru:(none)):
331 Password required
230 Logged in, proceed
ftp> dir . "C:\Documents\bat\ftp_del.tmp"
200 PORT command OK
150 Opening data connection
226 Transfer completed
ftp: 202 байт получено за 0,00 (сек) со скоростью 202000,00 (КБ/сек).
ftp> bye
221 Bye
FINDSTR: Не удается открыть C:\Documents\bat\ftp_del.dir
Связь с ftp.narod.ru.
220 first-ftp.narod.ru (Libra FTP daemon 0.17 20100219)
Пользователь (ftp.narod.ru:(none)):
331 Password required
230 Logged in, proceed
ftp> bye
221 Bye
Где может быть ошибка. В коде я исправил только каталог MISC на .*
Smith_Wesson
24-05-2011, 15:02
Помогите разрулить с такой проблемой. Заливаю файлы *.xls на диапазон FTP следующим батников.
For /l %%a In (1,1,30) do ftp.exe -v -i -n -s:ftp.cfg 192.168.0.%%a
Возникла необходимость предварительно при коннекте к ftp удалять файлы, которые там уже есть.
Вот содержание ftp.cfg:
USER anonymous anonymous
binary
del Admin/HOME/VERSION_LOG/*
cd Admin/HOME/VERSION_LOG
mput C:\WORK\BAC\*.xls
quit
при этом (при попытке удаления файлов) получаю сообщение от сервака "Admin/HOME/VERSION_LOG/*: The filename, directory name, or volume label syntax is incorrect."
если меняю в конфиге:
USER anonymous anonymous
binary
del Admin/HOME/VERSION_LOG/
cd Admin/HOME/VERSION_LOG
mput C:\WORK\BAC\*.xls
quit
получаю в итоге "Admin/HOME/VERSION_LOG/: Access is denied."
Не пойму, в чем ошибка? При том, что удаленно захожу на FTP через FAR - права на удаления есть. Где-то ошибка в синтаксисе?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.