sansun
Цитата:
Вот чуток адаптированный код, который я в свое время писал для своих нужд. Проверено на ftp.narod.ru - у меня работает. Хотя сильно сомневаюсь, что у вас с первого раза заработает - все очень индивидуально и зависит от настроек системной даты и от еще разных вещей. Главное - понять суть. Я не утверждаю, что код этот умен, думаю, многие гораздо лучше напишут. Если не заработает - пиши - помогу, только как можно больше инфы нужно будет. Да, и еще, данный батник сохраняет пароль в незашифрованном виде в файле ftp.ini там его любой может подглядеть.
Код: @echo off
setlocal enabledelayedexpansion
for /f "delims=. tokens=1-3" %%a in ('echo %date%') do (
set day=%%a
set month=%%b
set year=%%c)
if /i %month%==01 set nmonth=Jan
if /i %month%==02 set nmonth=Feb
if /i %month%==03 set nmonth=Mar
if /i %month%==04 set nmonth=Apr
if /i %month%==05 set nmonth=May
if /i %month%==06 set nmonth=Jun
if /i %month%==07 set nmonth=Jul
if /i %month%==08 set nmonth=Aug
if /i %month%==09 set nmonth=Sep
if /i %month%==10 set nmonth=Oct
if /i %month%==11 set nmonth=Nov
if /i %month%==12 set nmonth=Dec
if exist ftp.ini goto download
::Ввод установочных данных
echo Введите адрес ftp-сервера. Например: ftp.narod.ru
set /p ftp_adress=
echo Введите ваш логин на ftp-сервере Например: delta-greit
set /p ftp_login=
echo Введите пароль для вашего логина.
set /p ftp_password=
:: Запись введеных данных в ftp.ini
echo Создаю ftp.ini . . .
echo [Ftp adress]> ftp.ini
echo 0+%ftp_adress%>> ftp.ini
echo [Ftp login]>> ftp.ini
echo 0#%ftp_login%>> ftp.ini
echo [Ftp password]>> ftp.ini
echo 0~%ftp_password%>> ftp.ini
ownload
::Чтение значений переменных из ftp.ini
for /f "eol=[ tokens=2 delims=~" %%a in (ftp.ini) do set ftp_password=%%a
for /f "eol=[ tokens=2 delims=#" %%a in (ftp.ini) do set ftp_login=%%a
for /f "eol=[ tokens=2 delims=+" %%a in (ftp.ini) do set ftp_adress=%%a
::Создание сценария входа и действий на ftp-сервере (создаем список имеющихся файлов)
echo %ftp_login%> check.del
echo %ftp_password%>> check.del
echo cd work>> check.del
echo dir>>check.del
echo quit>>check.del
::Заходим на ftp по сценарию check.del и получаем список всех файлов в логе (log.del)
ftp -i -v -s:check.del %ftp_adress% > log.del
del /q check.del 2>nul
::Создание сценария входа и действий на ftp-сервере (скачиваем файлы с сегодняшней датой)
echo %ftp_login%> download.del
echo %ftp_password%>> download.del
echo cd work>> download.del
::Из лога выцепляем те строки, в которых содержится сегодняшняя дата и пишем имена
::файлов из этих строк в сценарий вместе с командой get
for /f "tokens=9" %%a in ('find /i "%nmonth% %day%" log.del') do (
set file=%%a
echo get !file:~0,-1!>>download.del
)
echo quit>>download.del
del /q log.del 2>nul
::Заходим на ftp по сценарию download.del и скачиваем сегодняшние файлы
ftp -i -v -s:download.del %ftp_adress%
del /q download.del 2>nul
Цитата:
теперь другая проблема: с фтп надо качать файлы только за сегодняшнее число???
Вот чуток адаптированный код, который я в свое время писал для своих нужд. Проверено на ftp.narod.ru - у меня работает. Хотя сильно сомневаюсь, что у вас с первого раза заработает - все очень индивидуально и зависит от настроек системной даты и от еще разных вещей. Главное - понять суть. Я не утверждаю, что код этот умен, думаю, многие гораздо лучше напишут. Если не заработает - пиши - помогу, только как можно больше инфы нужно будет. Да, и еще, данный батник сохраняет пароль в незашифрованном виде в файле ftp.ini там его любой может подглядеть.
Код: @echo off
setlocal enabledelayedexpansion
for /f "delims=. tokens=1-3" %%a in ('echo %date%') do (
set day=%%a
set month=%%b
set year=%%c)
if /i %month%==01 set nmonth=Jan
if /i %month%==02 set nmonth=Feb
if /i %month%==03 set nmonth=Mar
if /i %month%==04 set nmonth=Apr
if /i %month%==05 set nmonth=May
if /i %month%==06 set nmonth=Jun
if /i %month%==07 set nmonth=Jul
if /i %month%==08 set nmonth=Aug
if /i %month%==09 set nmonth=Sep
if /i %month%==10 set nmonth=Oct
if /i %month%==11 set nmonth=Nov
if /i %month%==12 set nmonth=Dec
if exist ftp.ini goto download
::Ввод установочных данных
echo Введите адрес ftp-сервера. Например: ftp.narod.ru
set /p ftp_adress=
echo Введите ваш логин на ftp-сервере Например: delta-greit
set /p ftp_login=
echo Введите пароль для вашего логина.
set /p ftp_password=
:: Запись введеных данных в ftp.ini
echo Создаю ftp.ini . . .
echo [Ftp adress]> ftp.ini
echo 0+%ftp_adress%>> ftp.ini
echo [Ftp login]>> ftp.ini
echo 0#%ftp_login%>> ftp.ini
echo [Ftp password]>> ftp.ini
echo 0~%ftp_password%>> ftp.ini
ownload
::Чтение значений переменных из ftp.ini
for /f "eol=[ tokens=2 delims=~" %%a in (ftp.ini) do set ftp_password=%%a
for /f "eol=[ tokens=2 delims=#" %%a in (ftp.ini) do set ftp_login=%%a
for /f "eol=[ tokens=2 delims=+" %%a in (ftp.ini) do set ftp_adress=%%a
::Создание сценария входа и действий на ftp-сервере (создаем список имеющихся файлов)
echo %ftp_login%> check.del
echo %ftp_password%>> check.del
echo cd work>> check.del
echo dir>>check.del
echo quit>>check.del
::Заходим на ftp по сценарию check.del и получаем список всех файлов в логе (log.del)
ftp -i -v -s:check.del %ftp_adress% > log.del
del /q check.del 2>nul
::Создание сценария входа и действий на ftp-сервере (скачиваем файлы с сегодняшней датой)
echo %ftp_login%> download.del
echo %ftp_password%>> download.del
echo cd work>> download.del
::Из лога выцепляем те строки, в которых содержится сегодняшняя дата и пишем имена
::файлов из этих строк в сценарий вместе с командой get
for /f "tokens=9" %%a in ('find /i "%nmonth% %day%" log.del') do (
set file=%%a
echo get !file:~0,-1!>>download.del
)
echo quit>>download.del
del /q log.del 2>nul
::Заходим на ftp по сценарию download.del и скачиваем сегодняшние файлы
ftp -i -v -s:download.del %ftp_adress%
del /q download.del 2>nul