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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   Открыть mht в Интернете (http://forum.oszone.net/showthread.php?t=159838)

truvo 11-12-2009 01:28 1292110

Открыть mht в Интернете
 
Например, мне нужно отослать кому-то ссылку на интернет-страницу, сохраненную в виде mht-файла. Если открыть файл в браузере, в панели адреса указан его "местный адрес", со словами localhost. Чтобы узнать настоящий адрес страницы, я делаю так: перехожу с этой страницы по какой-то из ссылок на ней на другую, затем возвращаюсь обратно, и так получаю в панели адреса то, что мне нужно, т. е. искомую ссылку.

Возможно ли как-то иначе и проще выяснять настоящий адрес? Например, каким-то образом или через какую-то программу запускать mht в онлайн-режиме. Или как-то при сохранении страницы в виде вэб-архива копировать параллельно и ссылку?

Negativ 11-12-2009 09:32 1292262

truvo,
Ваще ничего не понял

Michael 11-12-2009 09:44 1292272

truvo, если эту тему сохранить в файл mht и посмотреть его не через браузер, а например в Total Commander (через F3) или в Word (в формате только текст)- на первом же экране будет строка вида
Цитата:

Content-Location: http://forum.oszone.net/thread-159838.html
которая собственно и является оригинальным адресом этой темы. Правда не знаю - всегда ли это работает, по крайне мере те mht файлы что нашел у себя на винте эту строку содержали и она была верная

truvo 11-12-2009 17:35 1292715

Michael, у меня куча таких файлов, к сожалению, с TC ваш рецепт не прокатил, а вот если открыть в блокноте - тогда да, вижу ссылку. Пока что - это вариант решения вопроса. Спасибо.

Michael 11-12-2009 20:20 1292825

truvo, а при нажатии F3 в Тotal Сommander у вас что запустилось? Lister с просмотром web-содержимого страницы? Если да, то надо в Lister'е выбрать "Опции -> Только текст" или сразу на клавиатуре нажать цифру 1 - тогда будет виден исходный код mht-файла

truvo 11-12-2009 21:24 1292873

Michael, угу, понял. Но ведь тогда, насколько я понимаю, можно реализовать и задачу, поставленную мной в первом посте. То есть написать батник, который найдет в указанном файле (или, например, в mht-файлах, находящихся с ним в одной папке) ссылку (или ссылки) после слов Content-Location и откроет эти ссылки в браузере.

gora 12-12-2009 13:56 1293308

Цитата:

Цитата truvo
написать какой-то батник, который найдет в указанном файле ... ссылку ... и откроет эти ссылки эту ссылку в браузере. »

Отредактировал цитату (опять расплывчатая постановка задачи, сколько файлов, в одной папке они лежат или нет, есть ли еще в папке(ах) файлы других типов и т.д.)
Код:

@Echo Off
Rem Путь файлу .mht
Set "mht_file=c:\musor\Новая папка\Открыть mht в Интернете.mht"

For /f "tokens=1*" %%a In ('FINDSTR /b /i "Content-Location:" "%mht_file%"') Do Set url=%%b& GoTo :_end
:_end
Rem Вывод url-а с которого сохранен файл
Echo %url%
Rem Открыть url в онлайн режиме
Start "" "%url%"
Pause >Nul


truvo 12-12-2009 22:07 1293674

gora, взял в качестве испытуемого файл с именем

Автоматическая очистка папки для временных файлов _ Polymorph.mht

Ваш батник не сработал. Когда переименовал файл в 1.mht - сработал. Подскажите, что не так.

gora 12-12-2009 22:09 1293675

Батник должен быть в кодировке кириллица DOS (866).

truvo 12-12-2009 22:31 1293689

gora, забыл про кириллицу - спасибо, всё отлично работает.

Цитата:

Цитата gora
опять расплывчатая постановка задачи, сколько файлов, в одной папке они лежат или нет, есть ли еще в папке(ах) файлы других типов »

gora, ну почему же расплывчатая? Вполне конкретная задача. Я же указал, что
Цитата:

Цитата truvo
находящихся с ним в одной папке »

, значит, ваш вопрос про местонахождение отпадает. С другой стороны, я предоставил свободу творчества - можно было решать задачу как для одного файла, так и, по желанию, для всех mht-файлов, содержащихся в папке. Понятно, что во втором случае, при "универсальном" решении, как, впрочем, и в случае с одним только файлом, нет необходимости указывать в батнике определенное имя обрабатываемого объекта, а можно, наверное, задать поиск всех файлов c таким расширением в текущей (или указанной) папке, затем последовательный перебор этих файлов с совершением указанных вами действий: то есть найти первый файл, извлечь ссылку, открыть, перейти к следующему файлу, извлечь-открыть и т. д. Разумеется, такая пакетная обработка будет иметь смысл только в том случае, если каждая новая ссылка будет открываться в новой вкладке браузера).

Ну а поскольку ищутся файлы с определенным расширением, то ваш вопрос про наличие файлов других типов тоже вроде бы не имеет смысла.

gora 12-12-2009 22:57 1293706

truvo
1 Наличие файлов только одного типа в папке упрощает задачу.
2 То, что они в одной папке не означает, что в ней не может быть вложенных папок с такими же файлами и не исключает, что Вам их тоже нужно будет обрабатывать, а формально они лежат в той же папке!
3 Какое число файлов? А если их 20, 50, 100? Представляете что будет при попытке открыть 100 файлов одновременно?
4 Батник будет извлекать ссылки очень быстро и сразу их запускать без задержки и сможет запустить 100 ссылок менее чем за секунду. Скорость вашего интернета позволит одновременно открывать хотя бы 10...20 страниц и не потребуется ли Вам, в этом случае, задержка на запуск следующей страницы после полной загрузки предыдущей?
5 Какова цель такого массового открытия страниц, ведь все их Вы одновременно читать не сможете?

Это только часть вопросов, возникающих при прочтении вашей постановки задачи.
Четкая постановка задачи - половина ее решения. ИМХО.

truvo 13-12-2009 00:33 1293791

gora, я с вашего позволения ещё маленько поразглагольствую. Если бы вложенные папки подразумевались, я бы четко это обозначил. Раз не написал - то подразумевал, что их нет. Хотя предусмотреть наличие влож. папок составителю батника не так уж и трудно... А ваши вопросы о количестве файлов, о скорости Интернета, и тем более о том, на фига это нужно, на мой взгляд, вообще не имеют отношения к условиям задачи. Потому что:

1) здесь важно одно, что файлов может быть некоторое количество, то есть не один.

2) разве я заказываю батник под свой канал Интернета, под свой комп? Речь об универсальном решении, а потянет или не потянет чей-то комп - это уже вопрос последствий применения в частном случае, при чем тут начальные условия? Разработчики фотошопа, по-моему, решали вопросы обработки изображений, не особенно заморачиваясь над тем, какая оперативка окажется у Васи, Пети и т. д.

В общем, gora, на будущее я понял, что задачу для таких людей, как вы, нужно формулировать как можно более узко, чтоб без вариантов. Тогда попробую уконкретить и усложнить заодно. Вы правы, читать сто страниц одновременно я не собираюсь, ибо пока ещё не свихнулся... Вот если бы ваш батник, который вы придумали, да облечь в графическую оболочку, чтобы там обзором можно было найти mht-файл и нажать на кнопочку "Открыть в Интернете" - это было бы вообще "шоколадно".

gora 13-12-2009 00:56 1293800

truvo, не надо обижаться. Вам нужно решение, а я лишь хочу Вам помочь, но не совсем понимаю задачу (люблю четкость). Вы ее в очередной раз меняете, уже не надо запускать все разом, а нужен некий графический выбор. GUI под нее вряд ли кто будет писать, но могу предложить как вариант использовать ТС. Можно немного подправить батник и сделать для него кнопку на панели ТС. Запускать .mht файл в онлайн режиме в этом случае можно будет двумя способами:
1 Установить курсор на нужный файл и кликнуть по кнопке
2 Перетащить нужный файл на кнопку

ТС для работы с файлами гораздо удобнее любых кнопок Обзор.

Такой вариант устроит?

truvo 13-12-2009 02:27 1293844

Цитата:

Цитата gora
truvo, не надо обижаться »

Даже не собирался...
Цитата:

Цитата gora
Вы ее в очередной раз меняете »

Просто вы задачу в принципе решили, и я пошел развивать дальше...
Цитата:

Цитата gora
Такой вариант устроит? »

Абсолютно! Я без TC в винде не работаю.

gora 13-12-2009 18:33 1294366

Цитата:

Цитата truvo
Такой вариант устроит? »
Абсолютно! »

Файл url_ext.bat :
Код:

@Echo Off
Set "mht_file=%~1"
If Not Defined mht_file Call :_Err "Нет ни какого файла"
For %%i In (%mht_file%) Do Set ext=%%~xi
If Not "%ext%"==".mht" Call :_Err "'%~1' не *.mht файл"
For /f "tokens=1*" %%a In ('FINDSTR /b /i "Content-Location:" "%mht_file%"') Do Set url=%%b& GoTo :_end
:_end
Set Burl=%url:~0,5%
If Not "%Burl%"=="http:" Call :_Err "Файл '%~1' не содержит URL"
Start "" "%url%"
Exit

:_Err
Title Ошибка запуска *.mht файла
Echo.
Echo                                ОШИБКА!!!
Echo.
Echo        %~1
Pause >Nul
Exit

Код кнопки в ТС:
Код:

TOTALCMD#BAR#DATA
%commander_path%\Utilites\url_ext.bat
%P%N
%commander_path%\TOTALCMD.EXE,33
Запуск *.mht файла в онлайн режиме
%commander_path%\Utilites\

-1

Файл url_ext.bat положил в папку %commander_path%\Utilites\, можно и в любую другую, откорректировав пути к нему в коде кнопки. Как вставить код кнопки на панель ТС можно глянуть здесь.

Запускать можно как и писал выше.
Цитата:

Запускать .mht файл в онлайн режиме в этом случае можно будет двумя способами:
1 Установить курсор на нужный файл и кликнуть по кнопке
2 Перетащить нужный файл на кнопку

truvo 13-12-2009 23:15 1294591

gora, замечание: в тексте батника слово "никакого" должно быть написано вместе.

В последней вашей редакции батник тоже должен быть в кодировке 866 или не обязательно?

gora, проверил - работает, но вот, например, MHT-файл, в котором содержится такая ссылка (действующая):

http://h10025.www1.hp.com/ewfrf/wc/d...=390426&dlc=en

В этом случае кнопка не работает и сообщений никаких не выдала.

gora 14-12-2009 00:14 1294634

Цитата:

Цитата truvo
батник тоже должен быть в кодировке 866 »

Обязательно, если в именах файлов будет кириллица.
Цитата:

Цитата truvo
но вот, например, MHT-файл, в котором содержится такая ссылка »

Сохранил файл с указанной ссылки. Имя файла:
Код:

Computer Restarts after Displaying Stop Error 0x0000007E (After Updating with Service Pack 3 for Windows XP) Compaq Presario S6300NX Desktop PC - HP Customer Care (United States - English).mht
переименовал его в 2.mht и кнопка сработала.
Т.к. имена передаются в батник и обрабатываются в нем, то они не должны содержать спец. символов. В данном случае это кавычки скобки да еще и встречающиеся дважды. Переименовывайте такие страницы при сохранении или позже иначе батник их не обработает.
Сделать батник, который бы обрабатывал ВСЕ спец. символы, по моему, нельзя. Сигналом к переименованию .mht файла с "запрещенным" именем может быть как раз отсутствие должной реакции на него батника. По другому сделать я не умею.

truvo 14-12-2009 00:25 1294644

gora, кавычек там нет. Вы имели в виду скобки?

А сделать так, чтобы батник переваривал и спецсимволы, - нельзя?

Или, быть может, стоит добавить что-то в текст батника и на этот случай, чтобы при наличии спецсимволов в имени предлагалось переименовать файл?

gora 25-12-2009 08:20 1303796

Цитата:

Цитата gora
Т.к. имена передаются в батник и обрабатываются в нем, то они не должны содержать спец. символов. ... Сделать батник, который бы обрабатывал ВСЕ спец. символы, по моему, нельзя. ... По другому сделать я не умею. »

Цитата:

Цитата gora
Переименовывайте такие страницы при сохранении или позже иначе батник их не обработает. ... Сигналом к переименованию .mht файла с "запрещенным" именем может быть как раз отсутствие должной реакции на него батника. »

Цитата:

Цитата gora
редактировалось gora, 14-12-2009 в 08:28. Причина: исправил очепятку и дополнил »


angry_dog 30-09-2010 17:32 1508309

Уважаемый gora, долго искал подобное решение, Ваше потрясающее по простоте и эффективности.
Цитата:

Сделать батник, который бы обрабатывал ВСЕ спец. символы, по моему, нельзя
Имена файлов mht берутся из названий веб-страниц. Не нужно ВСЕ спец. символы, сделайте в батнике поддержку скобок () и [], ну для полного счастья ещё ковычек «». Именно они встречаются наиболее часто. Спасибо Вам большое за труд.

gora 30-09-2010 19:45 1508411

Цитата:

Цитата angry_dog
сделайте в батнике поддержку скобок () и [], ну для полного счастья ещё ковычек «». »

Приведите пример ссылок на такие страницы.
Круглые скобки в имени файла мне удалось победить, квадратные проблем не вызывают, а вот символы «» это не стандартные кавычки (") и эти символы в батнике превращаются в <> которые в нем являются спец. символами перенаправления вывода и с ними вряд ли что-то можно будет сделать.

angry_dog 14-10-2010 14:41 1518763

Цитата:

Цитата gora
Круглые скобки в имени файла мне удалось победить »

А где можно скачать исправленный url_ext.bat?

gora 14-10-2010 15:47 1518820

Цитата:

Цитата angry_dog
А где »

А я помню? Две недели прошло, теперь нужно в мусоре искать...
Встречный вопрос, а где:
Цитата:

Цитата gora
пример ссылок на такие страницы. »

???

angry_dog 14-10-2010 16:02 1518828

Цитата:

Цитата gora
Приведите пример ссылок на такие страницы »

http://pr0gger.moole.ru/26498-junipher-greene.html
Цитата:

Цитата gora
теперь нужно в мусоре искать »

оригинально))) Поищите пожалуйста.

gora 14-10-2010 19:39 1518972

Нашел. Подправил еще, теперь должен работать и со скобками и с кавычками «»
Код:

@Echo Off
Set "mht_file=%~1"
If Not Defined mht_file Call :_Err "Нет никакого файла"
If Not "%~x1"==".mht" Call :_Err "'%~1' не *.mht файл"
Set "un=%TMP%\UnicumNameFile%~x1"
Copy "%~1" "%un%">Nul
For /f "tokens=1*" %%a In ('FINDSTR /b /i "Content-Location:" "%un%"') Do Set url=%%b& GoTo :_end
:_end
Del /q "%un%"
Set Burl=%url:~0,5%
If Not "%Burl%"=="http:" Call :_Err "Файл '%~1' не содержит URL"
Start "" "%url%"
Exit

:_Err
Title Ошибка запуска *.mht файла
Echo.
Echo                                ОШИБКА!!!
Echo.
Echo        %~1
Ping -n 6 Localhost>Nul
Exit


truvo 10-10-2012 02:09 2002450

Уважаемый gora, когда я бросаю давно сохраненный веб-архив на вашу кнопку, я так понимаю, что открывается в браузере не когда-то сохраненная, а сегодняшняя версия этой страницы?

И в том случае, если в этой сегодняшней версии есть какие-то изменения по сравнению с моим файлом, - мне было бы полезно освежить мой файл, то есть сохранить его сегодняшний вариант.

Не можете ли вы реализовать такое автоматическое пересохранение файла, когда при бросании на вашу кнопку он не только открывается в браузере, но и (одновременно) открытая страница сохраняется в том же месте на жестком диске и под тем же названием - с перезаписью прежней?


Время: 14:24.

Время: 14:24.
© OSzone.net 2001-