CMD/BAT - [решено] Удаление каталогов на FTP из батника

Ответить
Аватара пользователя
shraybikus

CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение shraybikus »

Помогите пожалуйста очистить каталог FTP. Нужно его очистить вместе со всеми подкаталогами.

mdelete * чистит всё содержимое подкаталогов, а надо грохнуть сами подкаталоги (их имена всё время разные). А для rmd нужно конкретные имена подкаталогов указывать, по маске он не работает.
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение amel27 »

Цитата shraybikus:



для rmd нужно конкретные имена подкаталогов указывать, по маске он не работает
CMD/BAT - [решено] Удаление каталогов на FTP из батника




можно через файл:



- выполнить DIR в текстовый файл;

- отобрать из текста имена каталогов;

- отфильтровать нужные через FindStr;

- сформировать конфиг и запустить RmDir



для конкретики нужен формат вывода DIR - он зависит от движка FTP-сервера
Аватара пользователя
shraybikus

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение shraybikus »

Я сделал 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 171108_oplata♪

04-21-09 04:52PM 181108_oplata♪

04-21-09 04:52PM 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




Очень нужна конкретика, помогите, пожалуйста.
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение amel27 »

Цитата shraybikus:



есть ещё ls
CMD/BAT - [решено] Удаление каталогов на FTP из батника




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



пример для каталогов, имя которых начинается на "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"==""  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

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение shraybikus »

Цитата amel27:



формат шаблонов FindStr отличатся от обычных, смотрите справку
CMD/BAT - [решено] Удаление каталогов на FTP из батника




прибил два ключа, оставил только IC, а то не попадали каталоги в список. Но есть затык в виде пробелов на конце имён каталогов:

rmdir "171108_oplata "

rmdir "181108_oplata "

rmdir "191108_oplata "

соответственно rmd не отрабатывает, каталога нету такого говорит.

И ещё, можно ли как-то вообще иключить маску "MISC"? Мне точно неизвестно, как будут называться каталоги.
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение amel27 »

Цитата shraybikus:



затык в виде пробелов на конце имён каталогов
CMD/BAT - [решено] Удаление каталогов на FTP из батника




исправил


Цитата shraybikus:



можно ли как-то вообще иключить маску "MISC"? Мне точно неизвестно, как будут называться каталоги
CMD/BAT - [решено] Удаление каталогов на FTP из батника




в смысле удалять ВСЕ каталоги?.. замени "MISC" на ".*"
Аватара пользователя
shraybikus

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение shraybikus »

Отлично!!!

Я только добавил Echo cd %$Root% >>"%$FFtp%" в CFG-файл для FTP:RmDir и всё взлетело!!!



Мегареспектище тебе, мегагуру скриптов и повелитель батников!!!
Аватара пользователя
shraybikus

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение shraybikus »

У меня не удаляются все файлы и каталоги на сервере, выдает ошибку:



Код:

Код: Выделить всё

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

Re: CMD/BAT - [решено] Удаление каталогов на FTP из батника

Сообщение Smith_Wesson »

Помогите разрулить с такой проблемой. Заливаю файлы *.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 - права на удаления есть. Где-то ошибка в синтаксисе?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»