Войти

Показать полную графическую версию : Скачивание случайного файла


prib0i
04-11-2013, 12:43
Всем привет, вот у меня такая проблема

Есть ftp сервер на нем лежат файлы *.rar их Много. Пробовал скачивать через Mget Он скачивает все. А нужен 1 случайный файл.
(Кстати скачивание файла происходит не с одного компа)
Подумал что это +- можно реализовать через Mls (Этим я сохраню название всех файлов, которые имеются на сервере в каталоге)
Но как теперь сделать переменную.

Например Есть файл Name.txt (В нем LOL.zip lol2.zip lol3.zip)
Как случайную строку из Name.txt Внести в такой код

(Bat1.bat)
ftp -v -n -s:1.lst 127.0.0.1


(1.lst)
USER name pass
binary
cd dir1/
get (Наша переменная из Name.txt).zip
bye

Foreigner
04-11-2013, 13:26
Например Есть файл Name.txt (В нем LOL.zip lol2.zip lol3.zip) »
Имена файлов в Name.txt в одну строку? Тогда:

@echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (name.txt) do (

for %%j in (%%i) do set /a cnt+=1

)

for /l %%i in (1,1,%cnt%) do set "f_!random!=%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do set "token=%%i"
for /f "tokens=%token%" %%i in (name.txt) do set "file=%%i"

(

echo USER name pass
echo binary
echo cd dir1/
echo get %file%
echo bye

) | ftp -v -n 127.0.0.1


Если в Name.txt по файлу на строку:

@echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in (name.txt) do set "f_!random!=%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do set "file=%%i"

(

echo USER name pass
echo binary
echo cd dir1/
echo get %file%
echo bye

) | ftp -v -n 127.0.0.1

prib0i
04-11-2013, 14:25
Спасибо большое!!!

Foreigner У меня есть ещё один вопрос.

Как добавить удаление файла с FTP После скачивания.

И если файла нет на FTp А в Name.txt он есть, или же файл попросту не до качался или произошла иная ошибка, то будет запущен start.bat

Заранее спасибо!!

Foreigner
04-11-2013, 15:42
prib0i, наверное добавить delete:

...
echo get %file%
echo delete %file%
echo bye
...

prib0i
05-11-2013, 16:10
Спасибо большое!!!




© OSzone.net 2001-2012