Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Проверка наличия файла на веб-сервере

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

(*.*)


Сообщения: 36491
Благодарности: 6675


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 19-05-2011
Описание: дополнил (-nv, -i и -o)
Всем привет!

Имеется текстовый список ссылок на файлы (одна на строку), размещенные на различных 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 для записи лога.

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

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 12:31, 19-05-2011

 

Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2328

Профиль | Отправить PM | Цитировать


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.

Последний раз редактировалось Morpheus, 19-05-2011 в 14:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:38, 19-05-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


(*.*)


Сообщения: 36491
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


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:\ можно сразу убрать, все в одной папке лежит.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 22:56, 19-05-2011 | #3


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2328

Профиль | Отправить PM | Цитировать


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
)
)
У меня твой список обработался нормально.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:08, 20-05-2011 | #4


(*.*)


Сообщения: 36491
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 01:14, 20-05-2011 | #5


Аватара для Morpheus

Ветеран


Сообщения: 12426
Благодарности: 2328

Профиль | Отправить PM | Цитировать


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

Отправлено: 01:22, 20-05-2011 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Проверка наличия файла на веб-сервере

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Определение атрибута файла & проверка наличия процесса user_123 Скриптовые языки администрирования Windows 10 19-11-2010 16:15
CMD/BAT - Скачивание файла и проверка на отличия от файла на сервере. maslovt Скриптовые языки администрирования Windows 2 08-05-2010 19:54
[решено] Проверка наличия процесса в Диспетчере задач Hawk37 AutoIt 1 05-03-2010 16:37
CMD/BAT - Проверка наличия диска в дисководе по папке MedVetoff Скриптовые языки администрирования Windows 8 27-08-2009 16:55
[решено] Проверка наличия поля в таблице БД Artem-Samsung Вебмастеру 8 19-03-2008 21:40




 
Переход