![]() |
FTP + CMD
Всем привет.
Задача в следующем: Написать батник, чтобы файлы из папки Outbox отправлялись на FTP, складывались в папку Sent, и после отправки папка Outbox очищалась. но, если по каким то причинам FTP не принял файл - он остается в Outbox. Для этого придумал так, что после отправки на фтп, отуда для подтверждения приходит файлик ok.txt, если приходит - значит все норм и папка Outbox очищается. Это в идеале. В реале не работает) Вот часть батника: @echo off set FROM=C:\WINDOWS\exprep set TO=c:\temp\expert\outbox\ md "%TO%\" IF /I %Windir% == C:\WINNT GOTO Win2K set vdate=%DATE:~0,-5% GOTO SetFileName :Win2K set vdate=%DATE:~3,-5% :SetFileName set vtime=%TIME:~0,-3% set vtime=%vtime::=.% C:\PROGRA~1\WinRAR\rar.exe a -r "%TO%\%VDATE%.rar" "%FROM%\*.*" del c:\WINDOWS\exprep\*.* /S /q >nul xcopy c:\temp\expert\outbox\*.rar c:\temp\expert\sent\ /s /e /h >nul ftp -s:ftp.txt ftp.ftp.ru if exist c:\temp\expert\outbox\ok.txt (del /s c:\temp\expert\outbox\*.* /q >nul) else goto :EOF а вот содержание ftp.txt user pass lcd c:\temp\expert\outbox put *.rar get ok.txt bye в итоге, батник создает архив, копирует в Sent, подключается к фтп, копирует архив туда, но в любом случае очищает Outbox, даже если файла ok.txt не было на фтп. Это и есть проблема. Плиз, хелп. ) |
а каким образом у тебя на удаленном ftp создается файл отчета "ok.txt"
|
можешь попробовать:
1)разместить перед предпоследней командой батника строчку вида del /s c:\temp\expert\outbox\ok.txt 2)Заменить Код:
if exist c:\temp\expert\outbox\ok.txt (del /s c:\temp\expert\outbox\*.* /q >nul) else goto :EOF Код:
if exist c:\temp\expert\outbox\ok.txt ( |
люди спасибо, разреб - все заработало. подкоректировал оба файлика. загвоздка в фтп была основная
@echo off taskkill /f /im expmon.exe>nul set FROM=C:\WINDOWS\exprep set TO=c:\temp\expert\outbox\ md "%TO%\" IF /I %Windir% == C:\WINNT GOTO Win2K set vdate=%DATE:~0,-5% GOTO SetFileName :Win2K set vdate=%DATE:~3,-5% :SetFileName set vtime=%TIME:~0,-3% set vtime=%vtime::=.% C:\PROGRA~1\WinRAR\rar.exe a -r "%TO%\%VDATE%.rar" "%FROM%\*.*" del c:\WINDOWS\exprep\*.* /S /q >nul start %WINDIR%\expmon.exe >nul del /s c:\temp\expert\outbox\*.txt ftp -s:ftp.txt ftp.ftp.ru if exist c:\temp\expert\outbox\ok.txt MOVE c:\temp\expert\outbox\*.rar c:\temp\expert\sent\ user pass lcd c:\temp\expert\outbox prompt mput *.rar mget *.txt bye |
есть похожая задачка, с ней такая проблема:
1. Как выкладывать отдельный файл командой ftp.exe на фтпшник с докачкой обязательно 2. Как при этом сохранить исходную дату/время файлов. Т.е. есть вчерашний файл, объемом 140м, который сегодня кладу на фтп, но за почаса, допустим, выгрузилось только первые 100м и произошел обрыв. Завтра процесс повторяю и команда не качает файл заново, а добивает начатое вчера, выгружая оставшиеся 40м, вместо всех 140м, но при этом дата у файла на фтп окажется завтрашней, а должна быть датой исходного файла. зы: надеюсь никого не запутал... прошу 2 ответа по пунктам, плиз. |
|
В принципе, с небольшим упращением проверок сделал.
Использовал MoveIt ftps, но пришлось отказаться от проверки длины файлов, т.к. ftps не понимает команду "literal" (а заодно и "send", чего я никак не ожидал и никак не мог "поймать" глючок). |
Время: 15:25. |
Время: 15:25.
© OSzone.net 2001-