Компьютерный форум 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=325223)

41275jur 26-03-2017 10:41 2722991

Копирование части текста
 
Доброго время суток.
Помогите с написанием скрипта. Есть текстовый файл index.txt

Содержание файла index.txt
Код:

</ul><br/><b>Скачать с сервера:</b><br/><ul><li><a href="http://aimp.su/storage/1ebc54f4e0ab861183fc4708934d8b79/aimp_4.13.1887.exe">AIMP.RU</a></li><li><a href="http://files.programki.net/aimp/1ebc54f4e0ab861183fc4708934d8b79/aimp_4.13.1887.exe">Programki.net</a></li><li><a href="https://yadi.sk/d/GezDlNUi3EDmTy">Yandex Disk</a></li><li><a href="https://drive.google.com/file/d/0B5rovoA-boWkR0NnM21lWktjU0k/view?usp=sharing">Google Drive</a></li><li><a href="http://www.programosy.pl/program,aimp.html">Programosy.pl</a></li></ul><a href="http://trusted.kaspersky.com/1EBC54F4E0AB861183FC4708934D8B79/AIM2514/info" target="_blank">
Необходимо в нем скопировать http://aimp.su/storage/1ebc54f4e0ab8..._4.13.1887.exe и вставить в файл Downloads.cmd заменив XXXX.

Содержание файла Downloads.cmd
Код:

@Echo Off
"%~dp0bin\wget" -P "%~dp0Downloads" XXXX
EXIT

Эта часть 1ebc54f4e0ab861183fc4708934d8b79/aimp_4.13.1887.exe сылки возможно постоянно меняется с выходом новой версии.
После изменения файла Downloads.cmd запустить его, а после окончания работы файла Downloads.cmd вернуть его в прежнее состояние.

greg zakharov 26-03-2017 12:53 2723022

Код:

@echo off
  for /f delims^=^"^ tokens^=4 %%i in (index.txt) do "%~dp0bin\wget" -P "%~dp0Downloads" %%i
exit /b


41275jur 27-03-2017 12:06 2723388

Спасибо за быстрый ответ.

Только вместо tokens^=4 надо tokens^=2, тогда скачивает первую ссылку, ту что надо.

Подскажите ещё аналоги программ curl и wget.

Iska 27-03-2017 12:11 2723392

Да их как-то особо и нет. А что — чего-то не хватает?

41275jur 27-03-2017 12:26 2723398

Они упорно не хотят качать эти ссылки
http://irfanview.info/files/iview444g.zip
http://irfanview.info/files/iview444.zip
Или качают неполный архив.

Iska 27-03-2017 13:05 2723412

Там специально стоит ограничение для таких умных как мы :lol:. Потому загружается не архив, а html-документ (расширение .zip не делает файл архивом). Используйте referer:
Код:

wget.exe --referer=http://irfanview.info/files/iview444g.zip http://irfanview.info/files/iview444g.zip

41275jur 27-03-2017 15:31 2723464

Извини, не дочитал. Если бы ты меня не ткнул носом, я бы и не обратил на это внимание. Я несилен в этих скриптах, поэтому и обращаюсь к специалистам.
Спасибо за ответ.
Подскажи пожалуйста как
Цитата:

Цитата Iska
wget.exe --referer=http://irfanview.info/files/iview444g.zip http://irfanview.info/files/iview444g.zip »

приделать к
Цитата:

Цитата greg zakharov
@echo off
for /f delims^=^"^ tokens^=4 %%i in (index.txt) do "%~dp0bin\wget" -P "%~dp0Downloads" %%i
exit /b »

с теми же условиями, что указаны выше.

Iska 27-03-2017 15:37 2723466

Код:

for /f delims^=^"^ tokens^=4 %%i in (index.txt) do "%~dp0bin\wget.exe" -P "%~dp0Downloads" --referer="%%~i" "%%~i"
Но это ровно для данных двух ссылок.

41275jur 27-03-2017 15:59 2723470

Большое спасибо за помощь.

41275jur 15-04-2017 07:19 2729450

Подскажи пожалуйста как из файла index.txt
Скрытый текст
<div class="article entry-content">
<b><font face="Arial, helvetica, sans-serif" size="3">[7-zip File Format Plugin]</font></b><div><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_7Z_0.0.5.zip" target="_blank">zip download</a></div><div><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_7Z_x64_0.0.5.zip" target="_blank">zip download</a>&nbsp;(<span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span></div><div><br></div><div><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[ALZ File Format Plugin]</font></b></div><div><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_ALZ_0.0.4.zip" target="_blank">zip download</a></div><div><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_ALZ_x64_0.0.4.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[Numerous Archive File Formats Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_Archive_0.0.6.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_Archive_x64_0.0.6.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[Digital Camera Raw File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_DCRaw_0.0.6_GPL2.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_DCRaw_x64_0.0.6_GPL2.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div></div><div><span style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_DCRaw_0.0.6_Source.zip" target="_blank">source code download</a></span></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[HD Photo(JPEG XR) File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_HDPhoto_0.0.6.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_HDPhoto_x64_0.0.6.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[HV3(HoneyView3) File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_HV3_0.0.3.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_HV3_x64_0.0.3.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[JBIG File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><div style="line-height: 20.3999996185303px;"><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JBIG_0.0.3.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_JBIG_x64_0.0.3.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div></div><div style="line-height: 20.3999996185303px;"><span style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JBIG_0.0.3_Source.zip" target="_blank">source code download</a></span></div><div><br></div><div><div style="line-height: 20.3999996185303px;"><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[JPEG 2000 File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JPEG2000_0.0.7.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_JPEG2000_x64_0.0.7.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[OpenEXR File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_OpenEXR_0.0.1.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_OpenEXR_x64_0.0.1.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[RAR File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_RAR_0.0.4.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_RAR_x64_0.0.4.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(</span><span style="line-height: 20.3999996185303px;">for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[WebP File Format Plugin]</font></b></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_WebP_0.0.8.zip" target="_blank">zip download</a></div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_WebP_x64_0.0.8.zip" target="_blank" style="line-height: 20.3999996185303px;">zip download</a><span style="line-height: 20.3999996185303px;">&nbsp;(for</span><span style="line-height: 20.3999996185303px;">&nbsp;</span><span style="line-height: 20.3999996185303px;">64-bit version)</span><br></div></div><div><span style="line-height: 20.3999996185303px;"><br></span></div><div><div style="line-height: 20.3999996185303px;"><b style="line-height: 20.3999996185303px;"><font face="Arial, helvetica, sans-serif" size="3">[Plugin SDK]</font></b></div></div><div><div style="line-height: 20.3999996185303px;"><a href="http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_SDK_1.0.8.zip" target="_blank">zip download</a></div></div><div><br></div></div></div></div></div></div></div>
<p class="infoAuthor"><span><dfn>Posted</dfn> by</span> <cite class="author">nyam</cite></p>
</div>
<div style="display:none">
<abbr class="updated" title="2015-12-16T22:05:27+09:00">2014/11/30 18:54</abbr>
<abbr class="published" title="2014-11-30T18:54:54+09:00">2014/11/30 18:54</abbr>
</div>

<div class="miscInfo">
<dl>

<dt class="postTag">Tag</dt>
<dd><a href="http://www.nyam.pe.kr/blog/tag/7-zip" rel="tag">7-zip</a>,
<a href="http://www.nyam.pe.kr/blog/tag/ALZ" rel="tag">ALZ</a>,
<a href="http://www.nyam.pe.kr/blog/tag/ARJ" rel="tag">ARJ</a>,
<a href="http://www.nyam.pe.kr/blog/tag/Digital%20Camera%20Raw" rel="tag">Digital Camera Raw</a>,
<a href="http://www.nyam.pe.kr/blog/tag/HD%20Photo" rel="tag">HD Photo</a>,
<a href="http://www.nyam.pe.kr/blog/tag/Imagine" rel="tag">Imagine</a>,
<a href="http://www.nyam.pe.kr/blog/tag/JBIG" rel="tag">JBIG</a>,
<a href="http://www.nyam.pe.kr/blog/tag/JPEG%202000" rel="tag">JPEG 2000</a>,
<a href="http://www.nyam.pe.kr/blog/tag/LZH" rel="tag">LZH</a>,
<a href="http://www.nyam.pe.kr/blog/tag/OpenEXR" rel="tag">OpenEXR</a>,
<a href="http://www.nyam.pe.kr/blog/tag/Plugin" rel="tag">Plugin</a>,
<a href="http://www.nyam.pe.kr/blog/tag/SDK" rel="tag">SDK</a>,
<a href="http://www.nyam.pe.kr/blog/tag/WebP" rel="tag">WebP</a></dd>

извлечь все сылки
Код:

http://www.nyam.pe.kr/dev/imagine/download/plugin
в текстовый файл input.txt, чтобы он был такого содержания
Код:

http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_7Z_0.0.5.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_7Z_x64_0.0.5.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_ALZ_0.0.4.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_ALZ_x64_0.0.4.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_Archive_0.0.6.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_Archive_x64_0.0.6.zip

и т.д.


Iska 16-04-2017 16:57 2729839

Цитата:

Цитата 41275jur
Подскажи пожалуйста как из файла index.txt »

Приведите ссылку на этот файл, откуда он был взят.

41275jur 16-04-2017 20:34 2729896

При помощи скрипта
Код:

"%~dp0\bin\curl" -O http://www.nyam.pe.kr/blog/entry/Imagine-Plugins
Создался файл Imagine-Plugins, после переименовал в файл index.txt.
Я понимаю что это сделано через одно место и не профессионально, но я пытался рассмотреть разные варианты.
Я нашел в нете скрипт и подредактировал под скачивания с этого сайта
Код:

@Echo off
REM переключаемся на Windows - кодировку
chcp 1251 >NUL
Setlocal Enabledelayedexpansion

rem  Определяем наличие прокси. Бывает полезно, если ПК в домене.
 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%
 
rem Перебор значений от 10 до 0 с шагом убывания 1
    for /l %%a in (10,-1,0) do (
    for /l %%b in (10,-1,0) do (
    for /l %%c in (10,-1,0) do (
rem Если маркерная переменная не создана
        If Not Defined flg (
            title Пытаемся скачать Imagine %%c.%%b.%%a_x64_Unicode
            Set fSURL=http://www.nyam.pe.kr/dev/imagine/download/x64/unicode/Imagine_%%c.%%b.%%a_x64_Unicode.zip
rem Если файл существует, смотрим его свойства
            bin\curl.exe -f -s -I !fSURL! %$X%|Find " 200 OK" >Nul
                            If ErrorLevel 0 (
rem Перебирая свойства файла, смотрим является ли он архивом zip
                For /F "Skip=1 Tokens=1* Delims=: " %%i In ('bin\curl.exe -f -s -I "!fSURL!" %$X%') Do Set %%i=%%j
                If /I "!Content-Type!"=="application/zip" (
                    Echo.
                    Echo Выполняется скачивание Imagine %%c.%%b.%%a_Unicode.zip  ...
rem Процедура скачивания файла с прогресс-баром
                    bin\curl.exe -f -# -O "!fSURL!" %$X%
rem Завершаем перебор значений, создаём маркерную переменную
                    set flg=1
))))))

Он сильно долго отсчитывает версию программы.
Так как надо скачать еще
Код:

http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_%%c.%%b.%%a_Unicode.zip
и 12 Plugin, а прикрепить ссылки к этому скрипту не смог и совместить в один bat файл несколько таких скриптов не получилось, скачивается только одна ссылка.
При помощи этого скрипта будут скачиваться файлы очень долго.

Нашел на форуме
Скрытый текст
@Echo Off
SetLocal EnableExtensions
Set FN=input.txt
For /F "Delims=" %%I In (%FN%) Do wget %%I

При помощи wget из файла input.txt скачивается быстро, поэтому и возник этот вопрос - как напичкать input.txt ссылками.

Iska 17-04-2017 01:03 2729958

41275jur, понимаете, в чём дело… Пакетные файлы весьма слабо подходят для реализации данной задачи. В принципе.

Лучше всего будет PowerShell, в первую очередь — из-за обилия возможностей.

Ну, вот, зачем:
Цитата:

Код:

rem Перебор значений от 10 до 0 с шагом убывания 1
    for /l %%a in (10,-1,0) do (
    for /l %%b in (10,-1,0) do (
    for /l %%c in (10,-1,0) do (


?! Надо брать страницу загрузки: :: Imagine - Image & Animation Viewer for Windows / Windows용 이미지 & 애니메이션 뷰어, загружать её, парсить на предмет ссылок, фильтровать из них те, что ведут к загрузкам файлов, например:
Код:

http://www.nyam.pe.kr/dev/imagine/download/x64/unicode/Imagine_1.0.9_x64_Unicode.zip
http://www.nyam.pe.kr/dev/imagine/download/x64/setup/unicode/Imagine_1.0.9_x64_Unicode.exe

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

Опишите, что именно Вы хотите получить. Не как, не каким путём, а что получить, зачем, и что планируется с полученным делать дальше.

x0r 17-04-2017 03:42 2729962

41275jur, помойму ты не в ту сторону смотришь. ЕЯПП, то вот что я делаю в таких случаях:
Фуррифокс + CustomButtons
Кнопка "Взять все ссылки на странице"
Скрытый текст
Код:

/* Code */
getUrls();
// --------------------------- Взять все Ссылки на странице ---------------------------------------------------------------- 
  function getUrls() {
  var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
  var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
    file.append("custombuttons");
    file.append("urllist" + Math.random() + ".txt");   

 var win = document.commandDispatcher.focusedWindow, doc = win.document;
 var sel = doc, winSel = win.getSelection();

    if(winSel.toString()){
      sel = doc.createElement('div');
      sel.appendChild(winSel.getRangeAt(0).cloneContents());
      };

  var str = '', links = sel.getElementsByTagName('a');
      for(var i = 0, lnk; lnk = links[i]; i++) {
        if(lnk.href)str += lnk.href + '\r\n'
        };

      gClipboard.write(getDomain());

    foStream.init(file, 0x02|0x08|0x20, 0666, 0);
    foStream.write(str, str.length);
    foStream.close();
// можно просто сразу запустить файл с сылками в текстовом редакторе ОС по-умолчанию, блокноте напр.
// тогда то шо ниже разделителя убрать\закомментировать. Запустится файл .txt
//    file.launch();
// ----------------
  var filea = Services.dirsvc.get('ProfD', Ci.nsIFile);
      filea.initWithPath(filea.path + "\\SOFT\\AkelPad-my\\AkelPad.exe");
  var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
      process.init(filea);
      process.run(false, [file.path], 1);
  }


Получилсо файл в АкелPad со всеми ссылками с страницы.

Дальше сортируем (CTRL+A, ALT+P -> комманда плугина сортировать по-имени) и удаляем лишнее.
Получили список:
Скрытый текст
Код:

http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_7Z_0.0.5.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_ALZ_0.0.4.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_Archive_0.0.6.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_DCRaw_0.0.6_GPL2.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_DCRaw_0.0.6_Source.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_HDPhoto_0.0.6.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_HV3_0.0.3.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JBIG_0.0.3.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JBIG_0.0.3_Source.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_JPEG2000_0.0.7.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_OpenEXR_0.0.1.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_RAR_0.0.4.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_SDK_1.0.8.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_WebP_0.0.8.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_7Z_x64_0.0.5.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_ALZ_x64_0.0.4.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_Archive_x64_0.0.6.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_DCRaw_x64_0.0.6_GPL2.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_HDPhoto_x64_0.0.6.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_HV3_x64_0.0.3.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_JBIG_x64_0.0.3.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_JPEG2000_x64_0.0.7.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_OpenEXR_x64_0.0.1.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_RAR_x64_0.0.4.zip
http://www.nyam.pe.kr/dev/imagine/download/plugin/x64/Imagine_Plugin_WebP_x64_0.0.8.zip
http://www.nyam.pe.kr/dev/imagine/download/setup/unicode/Imagine_1.0.9.exe
http://www.nyam.pe.kr/dev/imagine/download/setup/unicode/Imagine_1.0.9_Unicode.exe
http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_1.0.9.zip
http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_1.0.9_Unicode.zip
http://www.nyam.pe.kr/dev/imagine/download/x64/setup/unicode/Imagine_1.0.9_x64_Unicode.exe
http://www.nyam.pe.kr/dev/imagine/download/x64/unicode/Imagine_1.0.9_x64_Unicode.zip


Качаем его через wget -i

+
Если часто нужно, то в АкелПад на панели сделана у мя еще одна кнопка, где прописан wget с путем и коммандами:
Код:

"Загрузить этот список в WGET -i" Exec(`"%COMMANDER_PATH%\SOFT\Console\wget\wgetfile.cmd" "%f"`) Icon("%SYSTEMROOT%\System32\cmd.exe")
wgetfile.cmd примерно такой:
Скрытый текст
Код:

@echo off
@chcp 866 >nul
@set urls=%1
rem set /P  ref= укажи какой referer отправлять для сайта (обычно домен страницы):
set /p ref=<%urls%
for /f "delims=/ tokens=2" %%a in ("%ref%") do set ref=%%a
echo ^ -------------------------------------------------------------------------
set /P fname=Имя папки если нужно:
@set fname=%fname: =_%
echo ^ -------------------------------------------------------------------------
rem взять дату заменить точки на подчеркивание, развернуть сначала год_месяц_день
@for /f "delims=. tokens=1,2,3" %%i  in ("%date%") do set d=%%k_%%j_%%i
@set wgetdirWin=D:\WgetD\%d%\%fname%
if not exist %wgetdirWin% md %wgetdirWin%
@set wgetdir=/cygdrive/d/WgetD/%d%/%fname%
@set ua="Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0"
rem -------------------------------------------------------------------------
:DEFAULT
echo %ref% >>%wgetdirWin%urllist.txt
echo %url% >>%wgetdirWin%urllist.txt
echo ^------------------------------------------------------------------------- >>%wgetdirWin%urllist.txt
"%~dp0wget.exe" -cN --referer=%ref% -U
% --content-disposition --no-use-server-timestamps --restrict-file-names=nocontrol,windows -P %wgetdir% -i %urls%
if %ERRORLEVEL% equ 0 exit else pause
exit
exit



Качаются списки, складываются в папку с датой и\или введенным именем.

41275jur 17-04-2017 06:51 2729973

Iska, хочу создать автоматическое обновление программ для внутренних ассоциаций в Total Commander.
Цитата:

Цитата Iska
и что планируется с полученным делать дальше »

После скачивания - файлы распаковать, скопировать настройки, очистить папку с программой и переместить полученное в нее.
С распаковкой, копированием и т. д. я разобрался по мере своих возможностей, а вот со скачиванием - нет.
Цитата:

Цитата Iska
Лучше всего будет PowerShell »

Я в Bat с трудом разбираюсь, а PowerShel я запустить даже толком не могу. Как то Bat более ближе.

41275jur 17-04-2017 17:45 2730143

ПопробЫвал разобраться с PowerShell и вот что получилось
Код:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Add-Type -AssemblyName System.Drawing
$SiteAdress = "http://www.nyam.pe.kr/blog/entry/Imagine"
$HttpContent = Invoke-WebRequest -URI $SiteAdress
$HttpContent.Links | Foreach {$_.href }
$HttpContent.Links | Out-File temp.txt
Get-Content temp.txt | Select-String "Unicode.zip" | Out-File temp1.txt
Remove-Item -Path "temp.txt"
Get-Content temp1.txt | Select-String "outerHTML" | Out-File temp.txt
Remove-Item -Path "temp1.txt"
gc temp.txt | where {$_ -ne ""} > temp1.txt
Remove-Item -Path "temp.txt"
start 'wget.cmd' -Wait
Remove-Item -Path "temp1.txt"

И файл wget.cmd
Код:

@Echo Off
%~dp0\bin\win_iconv -f UTF-16LE -t UTF-8 "temp1.txt" > "index.txt"
  for /f delims^=^"^ tokens^=2 %%i in (index.txt) do "%~dp0\bin\wget.exe" %%i

Не знаю насколько правильно, но получается скачивать.

Хотелось бы узнать такой вопрос:
  1. если в Bat файле пишем, например %~dp0\bin\wget.exe, то как пишется в PowerShell?
  1. как в PowerShell сделать выходной текстовый файл в кодировке UTF-8

Iska 17-04-2017 17:46 2730144

Цитата:

Цитата 41275jur
Iska, хочу создать автоматическое обновление программ для внутренних ассоциаций в Total Commander. »

Не могли бы Вы пояснить детально на данном конкретном примере.

Цитата:

Цитата 41275jur
После скачивания - файлы распаковать »

Куда распаковать?

Цитата:

Цитата 41275jur
скопировать настройки »

Какие настройки, откуда скопировать?

Цитата:

Цитата 41275jur
очистить папку с программой »

Где она расположена? Она была туда установлена, или туда были просто извлечены файлы из zip-архива?

Цитата:

Цитата 41275jur
Я в Bat с трудом разбираюсь, а PowerShel я запустить даже толком не могу. Как то Bat более ближе. »

41275jur, а тут и выбора-то особого нет. Пакетные файлы в принципе не годятся для целостного решения такой задачи, WSH может использоваться ограниченно.

41275jur 17-04-2017 19:52 2730171

Цитата:

Цитата Iska
Не могли бы Вы пояснить детально на данном конкретном примере. »

Пример обновления AIMP.
Создал в %COMMANDER_PATH% папку update
Структура папки
Скрытый текст
\update\
|---AIMP.cmd
|---AIMP_options
| |---Profile
| | |---AIMP-ContextMenu.ini
| | |---AIMP.bak
| | |---AIMP.ini
| | |---CDDB.db
| | |---EQPresetsLibrary.ini
| | |---AudioLibrary
| | | `---Local.db
| | |---PLS
| | `---Skins
| | `---Blackd.acs3.ini
| `---Skins
| |---Barracuda.acs2
| `---Blackd.acs3
|---bin
| |---curl.exe
| |---libeay32.dll
| |---libiconv2.dll
| |---libintl3.dll
| |---libssl32.dll
| |---robocopy.exe
| `---wget.exe
|---Downloads
|---manifest
| |---wget-1.11.4-1-dep.mft
| `---wget-1.11.4-1-dep.ver
`---share
`---locale
`---ru
`---LC_MESSAGES
`---wget.mo

Написал скрипт AIMP.cmd
Код:

@Echo Off
REM переключаемся на Windows - кодировку
chcp 1251 >NUL

:: Скачиваем программу с сайта в пупку %COMMANDER_PATH%\update

"%COMMANDER_PATH%\update\bin\curl" -O http://www.aimp.ru/index.php?do=download
ren "*.php_do=download" "*.txt"
FindStr /C:"http://aimp.su/storage" index.txt >"temp.txt
del "index.txt"
rename "temp.txt" "index.txt"
  for /f delims^=^"^ tokens^=2 %%i in (index.txt) do "%COMMANDER_PATH%\update\bin\wget.exe" %%i

:: Переименовываем файл

rename "*.exe" "aimp.exe"

:: Распаковываем портативную программу в папку TEMP

start /wait aimp.exe /AUTO="%TEMP%\Aimp\" /PORTABLE /SILENT

:: Копируем файлы и папки из TEMP\Aimp в папку %COMMANDER_PATH%\update\Downloads\Aimp

"%~dp0\bin\robocopy" "%TEMP%\Aimp" "%~dp0\Downloads\Aimp" /MOVE /E

:: Очищаем папку TEMP и удаляем некоторые файлы из папки %COMMANDER_PATH%\update\Downloads\Aimp

DEL /F /S /Q /A "%TEMP%\*"
DEL "%COMMANDER_PATH%\update\Downloads\Aimp\Uninstall.*"
DEL /Q "%COMMANDER_PATH%\update\Downloads\Aimp\Skins\*.*"

:: Копируем свои настройки из %COMMANDER_PATH%\update\AIMP_options в %COMMANDER_PATH%\update\Downloads\Aimp

"%~dp0\bin\robocopy" "%~dp0\AIMP_options" "%~dp0\Downloads\Aimp" /S /E

:: Подчищаем

DEL /Q "aimp.exe"
DEL /Q "index.txt"

:: Чистка папки с программой в %COMMANDER_PATH%\Utilites\Audio\AIMP

DEL /F /S /Q /A "%COMMANDER_PATH%\Utilites\Audio\AIMP"
set delfolder=%COMMANDER_PATH%\Utilites\Audio\AIMP
pushd "%delfolder%"
rmdir /s /q "%delfolder%"
popd

:: Копируем папки и файлы из %COMMANDER_PATH%\update\Downloads\Aimp в %COMMANDER_PATH%\Utilites\Audio\AIMP

"%~dp0\bin\robocopy" "%~dp0Downloads\Aimp" "%COMMANDER_PATH%\Utilites\Audio\AIMP" /MOVE /E

:: Чистим папку %COMMANDER_PATH%\update\Downloads

DEL /F /S /Q /A "%COMMANDER_PATH%\update\Downloads"
set delfolder=%COMMANDER_PATH%\update\Downloads
pushd "%delfolder%"
rmdir /s /q "%delfolder%"
popd

EXIT

При условии скрипт нужно запускать при запущенном Total Commander

41275jur 17-04-2017 20:09 2730174

Цитата:

Цитата Iska
Куда распаковать? »

В структуре папки update есть папка Downloads, скачивать в нее или как в примере AIMP, где находится файл скрипта.
Цитата:

Цитата Iska
Какие настройки, откуда скопировать? »

В папке update\AIMP_options, ложишь свои настройки.
Цитата:

Цитата Iska
Где она расположена? Она была туда установлена, или туда были просто извлечены файлы из zip-архива? »

Я создал собственную сборку Total Commander и все программы там портативные с сайтов разработчиков, кроме некоторых платных.
Меня интересуют бесплатные программы с сайтов, где есть портативные программы.

Iska 22-04-2017 10:41 2731396

Цитата:

Цитата 41275jur
Пример обновления AIMP. »

Разве это «данный конкретный пример»? Речь ведь у нас с Вами шла про Imagine. Ну, нет у меня желания скакать туда-сюда-обратно.

Вот примерная, криво- и косорылая болванка кода для Imagine (я понимаю, конечно, что код — ужас-ужас-ужас), проверялся под PowerShell 5.0:
Скрытый текст
Код:

#http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_1.0.9_Unicode.zip
$oUri = New-Object -TypeName 'System.Uri' -ArgumentList 'http://www.nyam.pe.kr/blog/entry/Imagine'
$oRegExp4DownloadFileName = New-Object -TypeName 'System.Text.RegularExpressions.Regex' `
    -ArgumentList '^http://www\.nyam\.pe\.kr/dev/imagine/download/unicode/(Imagine_[\d\.]+_Unicode\.zip)$', $([System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
$oRegExp4ProductVersion  = New-Object -TypeName 'System.Text.RegularExpressions.Regex' `
    -ArgumentList '^http://www\.nyam\.pe\.kr/dev/imagine/download/unicode/Imagine_([\d\.]+)_Unicode\.zip$', $([System.Text.RegularExpressions.RegexOptions]::IgnoreCase)

$sExpandPath    = '.\Imagine'
$sExpandFileName = 'Imagine.exe'
$sExpandFullName = "$sExpandPath\$sExpandFileName"

Write-Host "Update checking…"

try {
    $oHtmlWebResponseObject = Invoke-WebRequest -Uri $oUri -UseBasicParsing -ErrorAction Stop
} catch {
    $oHttpStatusCode = $_.Exception.Response.StatusCode
    Write-Host "Can't load [$($oUri.AbsoluteUri)] ($($oHttpStatusCode.value__): $oHttpStatusCode)"
}

$oHtmlWebResponseObject.Links | ForEach-Object -Process {
    $sHRef = $_.href

    if($oRegExp4DownloadFileName.IsMatch($sHRef)) {
        $sDownloadFileName      = $oRegExp4DownloadFileName.Matches($sHRef).Item(0).Groups.Item(1).Value
        $sDownloadProductVersion = $oRegExp4ProductVersion.Matches($sHRef).Item(0).Groups.Item(1).Value
       
        Write-Host "Remote product version is [$sDownloadProductVersion]."

        if(Test-Path -Path $sExpandFullName -PathType Leaf) {
            $sExpandProductVersion = (Get-Item -Path $sExpandFullName).VersionInfo.ProductVersion
            Write-Host "Local product version is [$sExpandProductVersion]."
        } else {
            $sExpandProductVersion = "0.0.0.0"
            Write-Host "Local product not found."
        }

        if($sDownloadProductVersion -ne $sExpandProductVersion) {
            Write-Host "Try downloading…"
            (New-Object -TypeName 'System.Net.WebClient').DownloadFile($sHRef, $sDownloadFileName)
           
            if(Test-Path -Path $sDownloadFileName -PathType Leaf) {
                Write-Host "Unzip downloaded file [$sDownloadFileName] into [$sExpandPath]…"
                Expand-Archive -Path $sDownloadFileName -DestinationPath $sExpandPath -Force | Out-Null
                Write-Host "Ready."
            } else {
                Write-Host "Not found downloaded file [$sDownloadFileName]."
            }
        } else {
            Write-Host "Current version [$sExpandProductVersion] is up to date."
        }
    }
}


Загружаем страницу html со ссылками на загрузку, проверяем все ссылки, сверяясь по регулярке, при совпадении вычленяем из ссылки номер версии, который сравниваем с версией исполняемого файла в каталоге .\Imagine (если таковой каталог и файл наличествуют), при разнице в версиях или отсутствии локального файла производим загрузку и распаковку архива в указанный каталог. Приведённый алгоритм применим только к данному конкретному продукту. Для других приложений он может заметно отличаться — ссылка на загрузку может не содержать имя файла, номер версии нужно будет вычленять не по самой ссылке, а в теле той же или другой страницы, а то и вовсе сначала потребуется полная загрузка файла, и т.п. тонкости.

41275jur 25-04-2017 19:19 2732268

Iska, спасибо за помощь, но не буду занимать Ваше время. С PowerShell я не справлюсь.
Скрипт твой супер, хоть ты и говоришь, что ужас-ужас-ужас. По нему возникает множество вопросов - например: $sExpandPath - откуда взялась буква s, аналогично с $oRegExp4DownloadFileName - буква o и что это за 4; ExpandPath, ExpandFileName, ExpandFullName - не могу нигде найти про них и многое другое.
Попытался написать скрипт
Код:

$SiteAdress = "http://www.nyam.pe.kr/blog/entry/Imagine-Plugins"
$HttpContent = Invoke-WebRequest -URI $SiteAdress
$HttpContent.Links | Foreach {$_.href } | Select-String "Imagine_Plugin" | Out-File -FilePath 'plugin.txt' -Encoding ascii

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

Жаль конечно что идея рубится на корню.

Извените за потраченное время.

Iska 27-04-2017 22:10 2732829

Цитата:

Цитата 41275jur
С PowerShell я не справлюсь. »

Справитесь, если уделите достаточно времени. Печально, конечно, что по сю пору нет вменяемого руководства по языку. В крайнем случае Вы всегда можете использовать и банальный .Net — VB или C++, благо что и компиляторы под рукой, и .Net нынче практически на девяносто процентах машин наличествует «искаропки», и даже Visual Studio в Express варианте бесплатна. На пакетных же файлах Ваша задача решаема через такую пень-колоду, что лучше и не вспоминать.

Цитата:

Цитата 41275jur
Скрипт твой супер, хоть ты и говоришь, что ужас-ужас-ужас. »

Там действительно трэш, угар и содомия в коде — мои познания в нём крайне невелики.

Цитата:

Цитата 41275jur
$sExpandPath - откуда взялась буква s »

Я написал :). Обычный приём для нетипизированных языков — указывать подтип переменной, в данном случае — что она будет содержать строковое значение (да, я знаю, что там и строка — тоже объект).

Цитата:

Цитата 41275jur
аналогично с $oRegExp4DownloadFileName - буква o и что это за 4 »

Аналогично. «o» — переменная будет «объектного» типа. «4» — читать следует как акроним слова «For», т.е. это могло бы выглядеть и как «$oRegExpForDownloadFileName». Также зачастую используют и «2» как акроним слова «To», например, «Go2Out» и т.п. Никакого сакрального смысла в них не вкладывается.

Цитата:

Цитата 41275jur
ExpandPath, ExpandFileName, ExpandFullName - не могу нигде найти про них »

И не найдёте. Это просто имена обычных переменных.

Вот так уже малость получше будет, проверка, загрузка и распаковка самой утилиты и некоторых плагинов:
Скрытый текст
Код:

# Imagine x86 — http://www.nyam.pe.kr/blog/entry/Imagine
# http://www.nyam.pe.kr/dev/imagine/download/unicode/Imagine_1.0.9_Unicode.zip
#
# Imagine Plugins x86 — http://www.nyam.pe.kr/blog/entry/Imagine-Plugins:
# http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_7Z_0.0.5.zip
# http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_Archive_0.0.6.zip
# http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_RAR_0.0.4.zip
# http://www.nyam.pe.kr/dev/imagine/download/plugin/Imagine_Plugin_WebP_0.0.8.zip
# & etc.

$aDownloadList = `
    (
        'Imagine - Image & Animation Viewer for Windows',
        'http://www.nyam.pe.kr/blog/entry/Imagine',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/unicode/(Imagine_[\d\.]+_Unicode\.zip)$',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/unicode/Imagine_([\d\.]+)_Unicode\.zip$',
        '.\Imagine',
        'Imagine.exe'
    ), (
        '7-zip File Format Plugin',
        'http://www.nyam.pe.kr/blog/entry/Imagine-Plugins',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/(Imagine_Plugin_7Z_[\d\.]+\.zip)$',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/Imagine_Plugin_7Z_([\d\.]+)\.zip$',
        '.\Imagine\Plugin',
        '7Z.plg'
    ), (
        'Numerous Archive File Formats Plugin',
        'http://www.nyam.pe.kr/blog/entry/Imagine-Plugins',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/(Imagine_Plugin_Archive_[\d\.]+\.zip)$',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/Imagine_Plugin_Archive_([\d\.]+)\.zip$',
        '.\Imagine\Plugin',
        'Archive\Archive.plg'
    ), (
        'RAR File Format Plugin',
        'http://www.nyam.pe.kr/blog/entry/Imagine-Plugins',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/(Imagine_Plugin_RAR_[\d\.]+\.zip)$',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/Imagine_Plugin_RAR_([\d\.]+)\.zip$',
        '.\Imagine\Plugin',
        'RAR.plg'
    ), (
        'WebP File Format Plugin',
        'http://www.nyam.pe.kr/blog/entry/Imagine-Plugins',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/(Imagine_Plugin_WebP_[\d\.]+\.zip)$',
        '^http://www\.nyam\.pe\.kr/dev/imagine/download/plugin/Imagine_Plugin_WebP_([\d\.]+)\.zip$',
        '.\Imagine\Plugin',
        'WebP\WebP.plg'
    ) | ForEach-Object -Process {
        [PSCustomObject]@{
            Name                    = $_[0];
            Uri                    = $_[1];
            RegExp4DownloadFileName = $_[2];
            RegExp4ProductVersion  = $_[3];
            ExpandPath              = $_[4];
            ExpandFileName          = $_[5]
        }
    }

foreach($oDownloadEntry in $aDownloadList) {
    $oUri                    = New-Object -TypeName 'System.Uri'                          -ArgumentList $oDownloadEntry.Uri
    $oRegExp4DownloadFileName = New-Object -TypeName 'System.Text.RegularExpressions.Regex' -ArgumentList $oDownloadEntry.RegExp4DownloadFileName, $([System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
    $oRegExp4ProductVersion  = New-Object -TypeName 'System.Text.RegularExpressions.Regex' -ArgumentList $oDownloadEntry.RegExp4ProductVersion,  $([System.Text.RegularExpressions.RegexOptions]::IgnoreCase)
    $sExpandPath              = $oDownloadEntry.ExpandPath
    $sExpandFileName          = $oDownloadEntry.ExpandFileName
    $sExpandFullName          = "$sExpandPath\$sExpandFileName"

    Write-Host "`r`nUpdate checking [$($oDownloadEntry.Name)]…"

    try {
        $oHtmlWebResponseObject = Invoke-WebRequest -Uri $oUri -UseBasicParsing -ErrorAction Stop
    } catch {
        $oHttpStatusCode = $_.Exception.Response.StatusCode
        Write-Host "Can't load [$($oUri.AbsoluteUri)] ($($oHttpStatusCode.value__): $oHttpStatusCode)"
        continue
    }

    $oHtmlWebResponseObject.Links | ForEach-Object -Process {
        $sHRef = $_.href

        if($oRegExp4DownloadFileName.IsMatch($sHRef)) {
            $sDownloadFileName      = $oRegExp4DownloadFileName.Matches($sHRef).Item(0).Groups.Item(1).Value
            $sDownloadProductVersion = $oRegExp4ProductVersion.Matches($sHRef).Item(0).Groups.Item(1).Value
       
            Write-Host "Remote product version is [$sDownloadProductVersion]."

            if(Test-Path -Path $sExpandFullName -PathType Leaf) {
                $sExpandProductVersion = (Get-Item -Path $sExpandFullName).VersionInfo.ProductVersion
                Write-Host "Local product version is [$sExpandProductVersion]."
            } else {
                $sExpandProductVersion = "0.0.0.0"
                Write-Host "Local product not found."
            }

            if($sDownloadProductVersion -ne $sExpandProductVersion) {
                Write-Host "Try downloading…"
                (New-Object -TypeName 'System.Net.WebClient').DownloadFile($sHRef, $sDownloadFileName)
           
                if(Test-Path -Path $sDownloadFileName -PathType Leaf) {
                    Write-Host "Unzip downloaded file [$sDownloadFileName] into [$sExpandPath]…"
                    Expand-Archive -Path $sDownloadFileName -DestinationPath $sExpandPath -Force | Out-Null
                    Write-Host "Ready."
                } else {
                    Write-Host "Not found downloaded file [$sDownloadFileName]."
                }
            } else {
                Write-Host "Current version [$sExpandProductVersion] is up to date."
            }
        }
    }
}

Write-Host "`r`nThat's done."


При желании ещё можно удалять загруженные архивы, дабы не путались под ногами.

41275jur 05-05-2017 14:44 2734396

Iska, подскажи более понятную литературу по PowerShell, особенно по сокращениям.

Подскажите - PowerShell воспринимает переменные среды Windows?

Возможно скачать файлы из текстового файла, например test.txt содержащий прямые ссылки?

Iska 05-05-2017 15:14 2734401

Цитата:

Цитата 41275jur
Iska, подскажи более понятную литературу по PowerShell, »

Я же писал — её фактически нет. У нас вроде как был Попов (Книга "Введение в Windows PowerShell" Андрей Попов), а больше и не знаю. Забугорных, понятно, куда как больше. Но проблема в том, что нет именно классической документации во вменяемом формате.

Цитата:

Цитата 41275jur
особенно по сокращениям. »

В оболочке набираете «help сокращение», например, «help gci» или «help %», и читаете.

Цитата:

Цитата 41275jur
Подскажите - PowerShell воспринимает переменные среды Windows? »

Напрямую — нет. Через устройство $Env можно работать, например:
Код:

Write-Host $Env:APPDATA
или через классы .Net.

Цитата:

Цитата 41275jur
Возможно скачать файлы из текстового файла, например test.txt содержащий прямые ссылки? »

Возможно. Получаете содержимое файла по Get-Content, передаёте по конвейеру на разбор по ForEach-Object, внутри которого посредством метода .DownloadFile() объекта класса System.Net.WebClient загружаете очередной файл.

41275jur 07-05-2017 13:00 2734801

Iska, помоги пожалуйста.

Цитата:

Цитата Iska
Возможно. Получаете содержимое файла по Get-Content, передаёте по конвейеру на разбор по ForEach-Object, внутри которого посредством метода .DownloadFile() объекта класса System.Net.WebClient загружаете очередной файл. »

Код:

Get-Content -Path '.\index.txt' | ForEach-Object -Process {
        $WebClient = New-Object System.Net.WebClient
        $WebClient.DownloadFile()
}

Но выскакивает ошибка:
Не удается найти перегрузку для "DownloadFile" и количества аргументов: "0".

Не могу понять, что такое перегрузку для "DownloadFile" и что писать с скобках $WebClient.DownloadFile()

Iska 07-05-2017 17:44 2734847

Цитата:

Цитата 41275jur
Не могу понять, что такое перегрузку для "DownloadFile" и что писать с скобках $WebClient.DownloadFile() »

System.Net.WebClient - Поиск в GoogleWebClient Class (System.Net)WebClient.DownloadFile Method (String, String) (System.Net):
Цитата:

Parameters

address
Type: System.String

The URI from which to download data.

fileName
Type: System.String

The name of the local file that is to receive the data.
Первым аргументом пишете Url, вторым — имя локального файла, в который будет идти сохранение загруженного содержимого. Если все Url'ы из файла-списка напрямую содержат имя файла в последнем элементе, можно извлекать его оттуда:
Скрытый текст
Код:

$sSourseFileList = 'C:\Мои проекты\0070\Urls.txt'

if(Test-Path -Path $sSourseFileList -PathType Leaf) {
    $aContent = Get-Content -Path $sSourseFileList
   
    foreach($sUrl in $aContent) {
        $sLocalFileName = [System.IO.Path]::GetFileName($sUrl)

        Write-Host "Try downloading [" -NoNewline -ForegroundColor DarkGreen
        Write-Host $sUrl              -NoNewline -ForegroundColor Cyan
        Write-Host "]…`t"              -NoNewline -ForegroundColor DarkGreen

        try {
            (New-Object -TypeName 'System.Net.WebClient').DownloadFile($sUrl, $sLocalFileName)
        } catch [System.Net.WebException] {
            Write-Host "Failure" -ForegroundColor Red

            $oHttpStatusCode = $_.Exception.Response.StatusCode

            Write-Host "Can't load ["          -NoNewline -ForegroundColor Red
            Write-Host $sUrl                    -NoNewline -ForegroundColor Cyan
            Write-Host "] ("                    -NoNewline -ForegroundColor Red
            Write-Host $oHttpStatusCode.value__ -NoNewline -ForegroundColor Yellow
            Write-Host ": "                    -NoNewline -ForegroundColor Red
            Write-Host $oHttpStatusCode        -NoNewline -ForegroundColor Yellow
            Write-Host ")"                                -ForegroundColor Red

            continue
        }
       
        if(Test-Path -Path $sLocalFileName -PathType Leaf) {
            Write-Host "OK" -ForegroundColor Green
        } else {
            Write-Host "Can't download remote file [" -NoNewline -ForegroundColor Red
            Write-Host $sUrl                          -NoNewline -ForegroundColor Cyan
            Write-Host "] into ["                    -NoNewline -ForegroundColor Red
            Write-Host $sLocalFileName                -NoNewline -ForegroundColor Cyan
            Write-Host "]."                                      -ForegroundColor Red
        }
    }
} else {
    Write-Host "Can't find source file " -NoNewline -ForegroundColor Red
    Write-Host $sSourseFileList                    -ForegroundColor Cyan
}


Например:

41275jur 19-05-2017 14:44 2738047

Iska, извини меня, я наверное тебе уже надоел, но я чем дальше в PowerShell, тем больше убеждаюсь что я далекий в нем.

Нужна твоя помощь.

1. парсинг сайта
Код:

$SiteAdress = "http://forum.oszone.net/thread-138555.html"
$sSourt = 'FullFlash64'
$site = Invoke-WebRequest -UseBasicParsing -Uri $SiteAdress
$site.Links | Foreach {$_.href } |
Select-String $sSourt |
Select-Object -ExpandProperty line

Получаю ссылку
Код:

http://files.simplix.ks.ua/1-FullFlash64.rar
как эту ссылку скачать.

2. парсинг сайта
Код:

$SiteAdress = "http://forum.oszone.net/thread-145766.html"
$sSourt = 'VCR_Hyb_x86_x64'
$site = Invoke-WebRequest -UseBasicParsing -Uri $SiteAdress
$site.Links | Foreach {$_.href } |
Select-String $sSourt |
Select-Object -ExpandProperty line

Получаю ссылку
Код:

https://www.upload.ee/files/6918564/VCR_Hyb_x86_x64_18.04.2017.rar.html
как для полученной ссылки сделать повторный парсинг. И после получения второй ссылки - скачать ее.

Возможно ли при помощи PowerShell распаковать .7z файл.

Как распаковать файл - например
Цитата:

Цитата Iska
распаковка самой утилиты и некоторых плагинов: »

распаковывались только файлы без папки (Imagine_Plugin_Archive_0.0.6.zip).

Iska 19-05-2017 15:11 2738051

Цитата:

Цитата 41275jur
1. парсинг сайта »

Никаких Select-String $sSourt | Select-Object -ExpandProperty line. Либо внутри ForEach-Object отбирайте потребные ссылки по заданным критериям, либо делайте Where-Object для того же самого.

Но вот у меня вопрос — а как Вы тут без предварительной загрузки и распаковки узнаете версию, то есть — нужно ли вообще что-то загружать? Потому тут надо обязательно учесть это:
Цитата:

Цитата simplix
Производит установку Adobe Flash (последняя версия, Flash.txt) компонентов ActiveX и Plugin (NPAPI+PPAPI), »

перед любыми попытками парсинга.

Цитата:

Цитата 41275jur
как эту ссылку скачать. »

В примерах выше это делается посредством New-Object -TypeName 'System.Net.WebClient').DownloadFile().
Код:


        try {
            (New-Object -TypeName 'System.Net.WebClient').DownloadFile($sUrl, $sLocalFileName)
        } catch [System.Net.WebException] {

Цитата:

Цитата 41275jur
Получаю ссылку
Код:

https://www.upload.ee/files/6918564/VCR_Hyb_x86_x64_18.04.2017.rar.html
как для полученной ссылки сделать повторный парсинг. И после получения второй ссылки - скачать ее. »

Полагаю, можно — капчи нет. Вот как выглядит ссылка:
Код:

<a id="d_l" href="https://www.upload.ee/download/6918564/dae7a1f2c31611a578b8/VCR_Hyb_x86_x64_18.04.2017.rar" onmouseover="document.dllink.src='images/dl_hover_.png';" onmouseout="document.dllink.src='images/dl_.png';"><img src="images/dl_.png" width="154" height="32" border="0" name="dllink" alt="Lae fail alla!" /></a>
Как сделать — точно так же, как делается получение первой ссылки. Надо искать ссылку с id=d_l и href, начинающемся на https://www.upload.ee/download/ и заканчивающемся на /VCR_Hyb_x86_x64_18.04.2017.rar (если Вы точно знаете имя файла) или на /VCR_Hyb_x86_x64_Дата.rar (если не знаете), проще всего это сделать регулярным выражением.

Цитата:

Цитата 41275jur
Возможно ли при помощи PowerShell распаковать .7z файл. »

Без наличия 7-Zip в виде исполняемого файла или библиотеки — нет, нельзя.

Цитата:

Цитата 41275jur
Как распаковать файл - например
Цитата Iska:
распаковка самой утилиты и некоторых плагинов: »
распаковывались только файлы без папки (Imagine_Plugin_Archive_0.0.6.zip). »

У меня — в папку .\Imagine\Plugin\Archive.

41275jur 19-05-2017 16:25 2738070

Цитата:

Цитата Iska
У меня — в папку .\Imagine\Plugin\Archive. »

Архив распаковывается в папку .\Imagine\Plugin\Archive\файлы, а должен распаковываться .\Imagine\Plugin\файлы.
Цитата:

Цитата Iska
Без наличия 7-Zip в виде исполняемого файла или библиотеки — нет, нельзя. »

Как тогда в PowerShell выбрать разрядность - например как CMD/BAT:
Код:

Set xOS=x64
If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86
"%~dp0\extra\%xOS%\7za" x "%~dp0\Downloads\*.7z" -oDownloads\1


Iska 20-05-2017 00:59 2738140

Цитата:

Цитата 41275jur
а должен распаковываться .\Imagine\Plugin\файлы. »

Почему в эту, а не в .\Imagine\Plugin\Archive? Внутри архива Imagine_Plugin_Archive_0.0.6.zip находится каталог Archive, и уже в нём находятся файлы Archive.plg, Ark32.dll, ArkLicense.txt (для x86 версии). Мы извлекаем содержимое архива «как есть», посему и возникают в Plugin такие каталоги, как Archive и WebP. В чём проблема-то? Я лично не вижу таковой:


Цитата:

Цитата 41275jur
Как тогда в PowerShell выбрать разрядность - например как CMD/BAT: »

Выбрать разрядность чего? И зачем нужно выбирать?

41275jur 23-05-2017 14:13 2738949

Цитата:

Цитата Iska
Почему в эту, а не в .\Imagine\Plugin\Archive? »

Извини - моя невнимательность.
Цитата:

Цитата Iska
Но вот у меня вопрос — а как Вы тут без предварительной загрузки и распаковки узнаете версию »

Написал скрипт
Скрытый текст
HTML код:

$SiteAdress = 'http://files.simplix.ks.ua/Flash.txt'
$Uri = 'http://files.simplix.ks.ua/1-FullFlash64.rar'
$DownloadEntry = 'Adobe Flash Player ActiveX and Plugin'
$SourseFile = 'Flash.rar'
$FileName = 'Flash.exe'

      Write-Host "`r`nПроверка обновлений [$($DownloadEntry)]…"
$site = Invoke-WebRequest -UseBasicParsing -Uri $SiteAdress
 
        Write-Host "Версия программы на сайте " -NoNewline -ForegroundColor DarkGreen
        Write-Host $site.Content              -NoNewline -ForegroundColor Cyan
        Write-Host ""              -NoNewline -ForegroundColor DarkGreen

$Path = (Get-ItemProperty ‘HKLM:\SOFTWARE\Macromedia\FlashPlayerActiveX’)
$Path.PSObject.Properties | ForEach-Object {
    If($_.Name -like '*Version*'){
       
        Write-Host "`r`nУстановленая версия программы " -NoNewline -ForegroundColor DarkGreen
        Write-Host $_.Value              -NoNewline -ForegroundColor Cyan
        Write-Host ""              -NoNewline -ForegroundColor DarkGreen

            Write-Host "`r`nСкачиваем файл [$($SourseFile)]…"

            Invoke-WebRequest $Uri -OutFile $SourseFile -UseBasicParsing -ErrorAction Stop
 
    if(Test-Path -Path $SourseFile -PathType Leaf) {
            Write-Host "Файл " -NoNewline -ForegroundColor DarkGreen
            Write-Host $SourseFile            -NoNewline -ForegroundColor Cyan
            Write-Host " скачен"            -NoNewline -ForegroundColor DarkGreen
            Write-Host " OK"              -NoNewline -ForegroundColor Cyan

        Write-Host "`r`nРаспаковка файла [$($FileName)]…"

set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
sz e -r $SourseFile $FileName

    if(Test-Path -Path $FileName -PathType Leaf) {
            Write-Host "Файл " -NoNewline -ForegroundColor DarkGreen
            Write-Host $FileName            -NoNewline -ForegroundColor Cyan
            Write-Host " распакован"            -NoNewline -ForegroundColor DarkGreen
            Write-Host " OK"              -NoNewline -ForegroundColor Cyan

Start-Process Flash.exe -Wait         
            }
        }
    }
}


Что то я запутался в этом скрипте.


Время: 03:34.

Время: 03:34.
© OSzone.net 2001-