Рекомендуемый метод Загрузки URL-адреса через запланированную задачу в Windows


У меня есть веб-страница, размещенная в окне Windows, которую мне нужно заверить, загружается по крайней мере один раз/день. Мой текущий план состоит в том, чтобы создать запланированную задачу, которая открывает Internet Explorer и попадает в URL:

"C:Program FilesInternet Exploreriexplore.exe" myurl.com/script_to_run_daily.aspx

Это было просто настроить и работает нормально, но это поражает меня как хак, потому что Internet Explorer на самом деле должен открыть и ударил этот URL. Мне не нужно никакого ввода с этой страницы, он просто хранит кэшированные данные в файлах, когда он попадает.

есть ли способ дождевика делать это? В случае, если это имеет значение, это VB.net сайт.

спасибо заранее!

7 54

7 ответов:

Как отметил Ремус Русану, PowerShell будет способом пойти. Вот простой однострочный файл, который можно использовать для создания запланированной задачи без необходимости писать отдельный файл. ps1:

powershell -ExecutionPolicy unrestricted -Command "(New-Object Net.WebClient)
                                           .DownloadString(\"http://localhost/cron.aspx\")"

вы можете создать запланированную задачу следующим образом:

schtasks /create /tn "MyAppDailyUpdate" /tr "powershell -ExecutionPolicy unrestricted 
        -Command \"(New-Object Net.WebClient)
              .DownloadString(\\"http://localhost/cron.aspx\\")\"" /sc DAILY /ru System

этот пример устанавливает задачу для выполнения ежедневно-обратитесь к schtasks.exe документация дополнительные параметры.

вы можете запланировать a PowerShell сценарий. PS довольно мощный и дает вам доступ ко всей платформе .Net Framework, а также изменения. Вот пример:

$request = [System.Net.WebRequest]::Create("http://www.example.com")
$response = $request.GetResponse()
$response.Close()

другой вариант-сценарий VB. Например (сохранить как файл.vbs):

sSrcUrl = "http://yourdomain.com/yourfile.aspx"
sDestFolder = "C:\yourfolder\"
sImageFile = "filename.txt"
set oHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.open "GET", sSrcUrl, False
oHTTP.send ""
set oStream = createobject("adodb.stream")
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
oStream.type = adTypeBinary
oStream.open
oStream.write oHTTP.responseBody
oStream.savetofile sDestFolder & sImageFile, adSaveCreateOverWrite
set oStream = nothing
set oHTTP = nothing
WScript.Echo "Done..."

начиная с PowerShell 5.0,curl псевдоним Invoke-WebRequest, Так что вы можете создать запланированную задачу следующим образом:

Action: Start a program
Program/script: powershell
Add arguments: curl http://www.example.com/foo/bar

вы также можете использовать Invoke-WebRequest, а curl более лаконично.

Это SuperUser.com ответ гораздо проще.

cmd /c start http://example.com/somePage.html

более конкретно, вот как это выглядит в запланированной задаче Windows:

enter image description here

хотя, это, вероятно, запускает настроенный по умолчанию браузер в фоновом режиме. Если это должен быть IE, то это должно быть настроено. Это, вероятно, лучший вариант. Хорошо иметь решение, которое выполняется непосредственно как шаг действия задачи. Вся информация находится здесь. Еще лучше, если он будет кратким, так что вы можете увидеть большую часть команды без прокрутки по текстовому полю.

WGET / CURL-хорошая альтернатива

во всяком случае, WGET будет хорошей альтернативой cmd..start..url. я не первый, кто об этом думает. Недостатком является то, что вам нужно скачать WGET для Windows, чтобы он работал - это не готовое решение. Но WGET легче и главное дает вам больше сила. Вы можете отправить много других типов URL-вызовов. Это включает в себя различные методы HTTP, такие как POST, пользовательские заголовки и многое другое. Curl-это хороший вариант, а не Wget - у них разные наборы функций, многие перекрываются.

PowerShell-не рекомендуется

PowerShell, можно считать" более легким " вариантом, но вы также загружаете PowerShell (.Net AppDomain), который имеет небольшую задержку, а также команда намного длиннее, и поэтому ее труднее запомнить, если вы делаю это регулярно. Поэтому PowerShell-не лучший вариант.

VBScript-не рекомендуется

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

кроме того, см. похожие вопросы:

существуют версии Windows наиболее распространенных средств http-запросов командной строки, таких как cURL и wget. Вы, конечно, можете создать запланированную задачу, которая будет запускать один из них. Я также сделал это из сценария Хоста сценариев Windows, Если вам нужно было зациклить или создать параметры URL на лету или некоторые из них.

пробовал с curl на PowerShell 4.0, curl-это псевдоним для Invoke-WebRequest, поэтому вы можете создать запланированную задачу следующим образом:

действие: запуск программы Программа/скрипт для PowerShell Добавить аргументы: curl http://www.example.com/foo/bar

работал как шарм!