Любой язык - [решено] Проверка наличия файла на веб-сервере

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

Любой язык - [решено] Проверка наличия файла на веб-сервере

Сообщение Vadikan »

Всем привет!



Имеется текстовый список ссылок на файлы (одна на строку), размещенные на различных HTTP серверах.

Все ссылки в формате

Код:

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

http://site.domain/path/file.ext

Нужно проверить, живы ли ссылки, и записать все живые в отдельный текстовый файл в таком же формате.



Есть идея подключить к делу
wget
для Windows (лучше брать setup простоты установки).



Одна ссылка:



Код:

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

wget --spider -nv http://tools.oszone.net/Vadikan/files/test.exe

Список ссылок из файла:



Код:

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

wget --spider -nv -i url_list.txt

Он проверяет нормально, но выводит в результаты текст, который придется фильтровать.

Ключ -nv отключает подробный вывод. Есть еще ключ -o file.txt для записи лога.



Возможно, есть другие пути. Буду признателен за любую реализацию!
Аватара пользователя
Morpheus

Re: Любой язык - [решено] Проверка наличия файла на веб-сервере

Сообщение Morpheus »

Vadikan, мой скромный вариант (сильно прошу не бить!) Изображение



Код:

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

@echo off
del "c:\urls2.txt"
FOR /F "Tokens=*" %%a IN (c:\urls.txt) DO (
"путь_к\wget.exe" --wait=1 --timeout=3 --tries=2 --spider %%a > c:\temp.txt 2>&1
FOR /F "Tokens=*" %%b IN ('FindStr /I "200 OK" "c:\temp.txt"') DO (
echo %%a >> c:\urls2.txt
)
)

Читает c:\urls.txt и складывает живые в c:\urls2.txt.
Аватара пользователя
Vadikan

Re: Любой язык - [решено] Проверка наличия файла на веб-сервере

Сообщение Vadikan »

Morpheus, спасибо, близко к цели Изображение



Проверил на





Код:

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

http://tools.oszone.net/Vadikan/files/test.exe
http://tools.oszone.net/Vadikan/files/test.vbs
http://tools.oszone.net/Vadikan/files/test.cmd
http://tools.oszone.net/Vadikan/files/test.bat
http://tools.oszone.net/Vadikan/files/test.mp3

Первые два там есть. Получил





Код:

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

http://tools.oszone.net/Vadikan/files/test.exe 
http://tools.oszone.net/Vadikan/files/test.exe 
http://tools.oszone.net/Vadikan/files/test.exe 
http://tools.oszone.net/Vadikan/files/test.vbs 
http://tools.oszone.net/Vadikan/files/test.vbs

В принципе правильно ссылки нашлись, но нужно убирать дубликаты.



Может, с -nv будет проще? Меньше фильтровать. Ну и вместо первой команды FOR можно использовать -i urls.txt.



Все C:\ можно сразу убрать, все в одной папке лежит.
Аватара пользователя
Morpheus

Re: Любой язык - [решено] Проверка наличия файла на веб-сервере

Сообщение Morpheus »

Vadikan, тогда так:



Код:

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

@echo off
del "c:\urls2.txt"
FOR /F "Tokens=*" %%a IN (c:\urls.txt) DO (
"путь_к\wget.exe" --wait=1 --spider %%a > c:\temp.txt 2>&1
FOR /F "Tokens=*" %%b IN ('FindStr /I /C:"200 OK" "c:\temp.txt"') DO (
echo %%a >> c:\urls2.txt
)
)

У меня твой список обработался нормально.
Аватара пользователя
Vadikan

Re: Любой язык - [решено] Проверка наличия файла на веб-сервере

Сообщение Vadikan »

Morpheus, спасибо. Я поправил на "... 200 OK", т.к. было





Код:

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

--01:11:50--  http://tools.oszone.net/Vadikan/files/test.exe
           => `test.exe'
Resolving tools.oszone.net... 89.108.123.52
Connecting to tools.oszone.net|89.108.123.52|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 98,200 (96K) [application/octet-stream]
200 OK
Аватара пользователя
Morpheus

Re: Любой язык - [решено] Проверка наличия файла на веб-сервере

Сообщение Morpheus »

Vadikan, ок, всё понятно. У меня локализованная версия, отсюда и разница видимо.



Код:

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

SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
Включен режим робота. Проверка существования удалённого файла.
--2011-05-20 01:11:03--  http://tools.oszone.net/Vadikan/files/test.exe
Распознаётся tools.oszone.net... 89.108.123.52
Устанавливается соединение с tools.oszone.net|89.108.123.52|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 98200 (96K) [application/octet-stream]
Удалённый файл существует.
Ответить

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