 |
|
Ruslan-kam |
11-09-2012 14:07 1986651 |
Скачать файл из интернета через переменную ссылку.
Не знаю правильно ли выразился, но в краце опишу что хочу получить.
Необходимо скачать установщик базы данных города 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/
то выбрасывает ошибку, сайт не даёт скачать структуру каталога.
Помогите придумать счётчик который каждый месяц бы прибавлял в ссылке единицу к версии.
|
Цитата:
Цитата Ruslan-kam
Через месяц скорей всего будет »
|
А если не будет? На html-странице есть ссылка на эту самую текущую версию?
|
Ruslan-kam |
11-09-2012 14:59 1986691 |
Iska, да есть. База данных Нижневартовска формат msi
Код:
http://nizhnevartovsk.2gis.ru/how-get/download/
|
Ruslan-kam, тогда есть смысл парсить эту страницу, например, при помощи DOM, и только затем, получив корректную текущую ссылку, загружал её.
|
Ruslan-kam |
11-09-2012 17:50 1986821 |
Iska, эээхххх тёмный лес я в этом...(
|
Можно на 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 1986952 |
Kazun, не получается. Создал файл с расширением .psc1, запускаю, окно PowerShell распахивается и тут же закрывается.
|
Сохраните под расширением ps1 и запускайте powershell -file C:\script.ps1
|
Ruslan-kam |
12-09-2012 09:06 1987159 |
Kazun, тоже нет. Выскакивает PowerShell через секунду в нём появляются красные строки, прочесть не успеваю окно захлопывается. У меня Win7, установленная из оригинального образа.
|
powershell -executionpolicy bypass -file C:\script.ps1
|
Ruslan-kam |
12-09-2012 10:31 1987208 |
Kazun, точно также, как и в предыдущий раз.
|
powershell -executionpolicy bypass -noexit -command "&{C:\script.ps1}"
|
Ruslan-kam |
12-09-2012 18:49 1987507 |
Код:
Отсутствует выражение после одноместного оператора "+".
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:\>
|
Проблема в сохранении скрипта,побилась кодировка.
|
Ruslan-kam |
13-09-2012 09:51 1987796 |
Kazun, да теперь заработало. Я запусаю скрипт powershell через cmd, можно ли теперь сделать так чтобы скрипт power shell передавал ссылку в cmd, а cmd в свою очередь передавала её в wget?
Просто в wget наглядно отображается процесс загрузки, а powershell безмолвное окно.
|
Можно,но не проще добавить строчку про wget в скрипт?
|
Ruslan-kam |
13-09-2012 10:09 1987809 |
если можно, то конечно так лучше.
И ещё нужно что бы скрипт качал не в ту папку в которой находится, а папку которую я пропишу в скрипте.
|
Напишите полную команду с wget.
|
Ruslan-kam |
13-09-2012 10:34 1987819 |
Код:
@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
|
Код:
$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
|
Ruslan-kam |
13-09-2012 11:12 1987834 |
Kazun, благодарю вроде всё работает без проблем. Но можно ли это всё записать в один командный файл. Получается сейчас я запускаю скрипт таким батником.
Код:
@Echo Off
wget -O %~d0\!install\!WPI\Install\Office\2GISShell.msi -A 2GISShell* -r -l 0 -nd http://www.2gis.ru/distributive/shell/last/
powershell -executionpolicy bypass -noexit -command "&{%~dp0www.2gis.ru_last.ps1}"
Можно ли через cmd запустить powershel и передать ему текст скрипта без использования промежуточного файла "www.2gis.ru_last.ps1". Не хочется плодить файлы. Нужно что бы всё было в одном cmd файле.
|
Не проверял:
Код:
powershell -command "&{wget -O %~d0\!install\!WPI\Install\Office\2GISShell.msi -A """*Nizhnevartovsk*""" -r -l 0 -nd ((New-Object Net.WebClient).DownloadString('http://nizhnevartovsk.2gis.ru/how-get/download/').split([char]10) | Select-String '(http://.+2GISData_Nizhnevartovsk.+msi)""" ').Matches[0].Groups[1].Value}"
|
Ruslan-kam |
13-09-2012 18:05 1988090 |
Код:
Отсутствует выражение после одноместного оператора "-".
строка:1 знак:2
+ - <<<< command&{wget -O D:\!install\!WPI\Install\Office\2GISShell.msi -A "*Ni
zhnevartovsk*" -r -l 0 -nd ((New-Object Net.WebClient).DownloadString('http://n
izhnevartovsk.2gis.ru/how-get/download/').split([char]10) | Select-String '(htt
p://.+2GISData_Nizhnevartovsk.+msi)" ').Matches[0].Groups[1].Value}
+ CategoryInfo : ParserError: (-:String) [], ParentContainsErrorR
ecordException
+ FullyQualifiedErrorId : MissingExpressionAfterOperator
|
Почему Вы не можете скопировать правильно?
|
Ruslan-kam |
14-09-2012 12:38 1988547 |
Как правильно? Всю жизнь копировал так: выделяю ЛКМ, далее ПКМ и "копировать".
|
Ruslan-kam,
Вы запускаете из командного файла (cmd, bat) или просто из cmd.exe? Если второе, то работать не будет, надо замените %~dp0 на реальный путь
|
Ruslan-kam |
14-09-2012 13:10 1988564 |
Из cmd
|
+ - <<<< command&{ - Явно не хватает пробела.
|
Ruslan-kam |
14-09-2012 13:20 1988574 |
Kazun, спасибо разобрался.
Извините ступил немного, нужно было указать путь к wget.exe
Теперь работает без сбоев.
|
Время: 05:32.
© OSzone.net 2001-