Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скачивание файла через http. (http://forum.oszone.net/showthread.php?t=192834)

Menjoy 02-12-2010 12:43 1556542

Скачивание файла через http.
 
Добрый день.

Пробую сделать утилитку, которая будет скачивать файл через http протокол, при этом полный адрес и название файла достаются из двух *.txt файлов (т.е. первая строка f_adress.txt соответственно с первой строкой file.txt). Мне кажется с циклами что-то запутался и будет читать для каждой строки f_adress.txt по каждой строке file.txt.
Затем, после скачивания всех нужных файлов, каталог с ними проверяется на наличие архивов, при необходимости они распаковываются, ну а далее будет работа другого скрипта, о нем потом (:

Прочитал темы:
http://forum.oszone.net/thread-155289.html
http://forum.oszone.net/thread-182283.html
http://forum.oszone.net/thread-181512.html

сделал некоторые выводы.

Получился такой файл:

Код:

@echo off
for /f %%l in (f_adress.txt) do (
        set KB_Url1=%%l
                for /f %%k in (file.txt) do (
                set KBFile1=%%k
       
SetLocal EnableExtensions

Set CURL=%~dp0curl.exe

CALL :GET_PROXY

<Nul Set /P XYZ=URL "KB_Url1" Testing...
"%CURL%" -f -s -I "KB_Url1" %$X% >Nul
If ErrorLevel 1 (Echo ERROR:%ErrorLevel%) Else (Echo OK!)

EXIT
:GET_PROXY
Set $X=&Set $R=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
 For /F "Tokens=1,3" %%i In ('REG Query "%$R%"^|Find "Proxy"') Do Set %%i=%%j
 If "%ProxyEnable%"=="0x1" Set $X=-x %ProxyServer%


       
        echo.
))


Тут только еще нет проверки на архивы.
Просьба помочь с проверкой и дополнениями.

Спасибо.

Menjoy 02-12-2010 12:52 1556548

Может это будет проще реализовать через wget?
Подсказали, что это буквально пару строк скрипта.

amel27 06-12-2010 05:50 1559294

как вариант:
Код:

@echo off

set /a "$n=0,$m=0"
for /f "tokens=1* delims=[]" %%a in ('^<f_adress.txt find /v /n ""') do set "$1_%%a=%%~b"& set/a $n+=1
for /f "tokens=1* delims=[]" %%a in ('^<file.txt find /v /n ""') do set "$2_%%a=%%~b"& set/a $m+=1
if %$n% neq %$m% echo Line numbers of tow files must be equal!& pause>nul& exit /B 1

Call:GET_PROXY
for /l %%i in (1,1,%$n%) do (
  call echo %%$2_%%i%% loading...
  call curl -f -# %$X% "%%$1_%%i%%" -o "%%$2_%%i%%"
)
EXIT/B

:GET_PROXY
 set "$x="&set $R=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
 for /f "tokens=1,3" %%i in ('REG Query "%$R%"^|Find "Proxy"') do set %%i=%%j
 if "%ProxyEnable%"=="0x1" set "$x=-x %ProxyServer%"
GoTo:EOF


Menjoy 07-12-2010 09:12 1560029

Спасибо.

В итоге вышел вот такой вариант через wget

Код:

@echo off

wget -b -i servers.txt -o logfile.txt
PING -n 15 127.0.0.1 >nul
"c:\program files\winrar\winrar.exe" e -df -IBCK  *.rar *.xls
del *.rar

echo.



Время: 22:58.

Время: 22:58.
© OSzone.net 2001-