PDA

Показать полную графическую версию : [решено] Скачать файл из интернета через переменную ссылку.


Страниц : [1] 2

Ruslan-kam
11-09-2012, 14:07
Не знаю правильно ли выразился, но в краце опишу что хочу получить.
Необходимо скачать установщик базы данных города 2gis ссылка которого меняется от месяца к месяцу. Допустим на данный момент последняя база скачивается по этой ссылке
http://download.2gis.ru/arhives/2GISData_Nizhnevartovsk-76.0.0.msi
Через месяц скорей всего будет
http://download.2gis.ru/arhives/2GISData_Nizhnevartovsk-77.0.0.msi
Для скачки использую cmd файл с такким содержанием
wget -O %~d0\!install\!WPI\Install\Office\2GISData_Nizhnevartovsk.msi -A *Nizhnevartovsk* -r -l 0 -nd http://download.2gis.ru/arhives/2GISData_Nizhnevartovsk-76.0.0.msi

Если указать
wget -O %~d0\!install\!WPI\Install\Office\2GISData_Nizhnevartovsk.msi -A *Nizhnevartovsk* -r -l 0 -nd http://download.2gis.ru/arhives/ то выбрасывает ошибку, сайт не даёт скачать структуру каталога.

Помогите придумать счётчик который каждый месяц бы прибавлял в ссылке единицу к версии.

Iska
11-09-2012, 14:38
Через месяц скорей всего будет »
А если не будет? На html-странице есть ссылка на эту самую текущую версию?

Ruslan-kam
11-09-2012, 14:59
Iska, да есть. База данных Нижневартовска формат msi http://nizhnevartovsk.2gis.ru/how-get/download/

Iska
11-09-2012, 17:03
Ruslan-kam, тогда есть смысл парсить эту страницу, например, при помощи DOM, и только затем, получив корректную текущую ссылку, загружал её.

Ruslan-kam
11-09-2012, 17:50
Iska, эээхххх тёмный лес я в этом...(

Kazun
11-09-2012, 20:02
Можно на PowerShell:
$url = "http://nizhnevartovsk.2gis.ru/how-get/download/"
$wc = New-Object Net.WebClient
$str = $wc.DownloadString($url).split("`n") | Select-String '(http://.+2GISData_Nizhnevartovsk.+msi)" '
$durl = $str.Matches[0].Groups[1].Value
$name = $durl.split("/")[-1]
$wc.DownloadFile($durl,$name)

Ruslan-kam
11-09-2012, 21:36
Kazun, не получается. Создал файл с расширением .psc1, запускаю, окно PowerShell распахивается и тут же закрывается.

Kazun
11-09-2012, 21:39
Сохраните под расширением ps1 и запускайте powershell -file C:\script.ps1

Ruslan-kam
12-09-2012, 09:06
Kazun, тоже нет. Выскакивает PowerShell через секунду в нём появляются красные строки, прочесть не успеваю окно захлопывается. У меня Win7, установленная из оригинального образа.

Kazun
12-09-2012, 09:29
powershell -executionpolicy bypass -file C:\script.ps1

Ruslan-kam
12-09-2012, 10:31
Kazun, точно также, как и в предыдущий раз.

Kazun
12-09-2012, 10:50
powershell -executionpolicy bypass -noexit -command "&{C:\script.ps1}"

Ruslan-kam
12-09-2012, 18:49
Отсутствует выражение после одноместного оператора "+".
C:\script.ps1:1 знак:2
+ + <<<< ACQ-url +AD0- +ACI-http://nizhnevartovsk.2gis.ru/how-get/download/+AC I-
+ CategoryInfo : ParserError: (+:String) [], ParseException
+ FullyQualifiedErrorId : MissingExpressionAfterOperator PS C:\>

Kazun
13-09-2012, 09:17
Проблема в сохранении скрипта,побилась кодировка.

Ruslan-kam
13-09-2012, 09:51
Kazun, да теперь заработало. Я запусаю скрипт powershell через cmd, можно ли теперь сделать так чтобы скрипт power shell передавал ссылку в cmd, а cmd в свою очередь передавала её в wget?
Просто в wget наглядно отображается процесс загрузки, а powershell безмолвное окно.

Kazun
13-09-2012, 10:03
Можно,но не проще добавить строчку про wget в скрипт?

Ruslan-kam
13-09-2012, 10:09
если можно, то конечно так лучше.

И ещё нужно что бы скрипт качал не в ту папку в которой находится, а папку которую я пропишу в скрипте.

Kazun
13-09-2012, 10:14
Напишите полную команду с wget.

Ruslan-kam
13-09-2012, 10:34
@Echo Off
wget -O %~d0\!install\!WPI\Install\Office\2GISShell.msi -A 2GISShell* -r -l 0 -nd http://www.2gis.ru/distributive/shell/last/
wget -O %~d0\!install\!WPI\Install\Office\2GISData_Nizhnevartovsk.msi -A *Nizhnevartovsk* -r -l 0 -nd http://download.2gis.ru/arhives/2GISData_Nizhnevartovsk-76.0.0.msi

Kazun
13-09-2012, 10:52
$path = "$((Get-Item $MyInvocation.MyCommand.Path).PsDrive.Root)!install\!WPI\Install\Office\2GISData_Nizhnevartovsk.msi"
$url = "http://nizhnevartovsk.2gis.ru/how-get/download/"
$wc = New-Object Net.WebClient
$str = $wc.DownloadString($url).split("`n") | Select-String '(http://.+2GISData_Nizhnevartovsk.+msi)" '
$durl = $str.Matches[0].Groups[1].Value

wget -O $path -A "*Nizhnevartovsk*" -r -l 0 -nd $durl




© OSzone.net 2001-2012