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

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

Vadikan 19-05-2011 12:31 1679032

Проверка наличия файла на веб-сервере
 
Всем привет!

Имеется текстовый список ссылок на файлы (одна на строку), размещенные на различных 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 19-05-2011 14:38 1679079

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 19-05-2011 22:56 1679305

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 20-05-2011 00:08 1679334

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 20-05-2011 01:14 1679351

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 20-05-2011 01:22 1679353

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]
Удалённый файл существует.



Время: 16:46.

Время: 16:46.
© OSzone.net 2001-