66 votes

Méthode recommandée pour charger une URL via une tâche planifiée sous Windows

J'ai une page web hébergée sur une machine Windows, que j'ai besoin pour assurer obtient chargé au moins une fois/jour. Mon plan est de créer une tâche planifiée qui s'ouvre Internet Explorer et frappe l'URL:

"C:\Program Files\Internet Explorer\iexplore.exe" myurl.com/script_to_run_daily.aspx

C'était simple à installer et fonctionne très bien, mais il me frappe comme un hack car Internet Explorer a en fait d'ouvrir et de frapper cette URL. Je n'ai pas besoin d'entrée de retour à partir de cette page, il suffit simplement de stocke en mémoire cache des données dans les fichiers quand il est frappé.

Est-il un moyen de le faire? En cas de questions, c'est un VB.net site.

Merci à l'avance!

130voto

Nikhil Dabas Points 1052

Comme l'a fait remarquer Remus Rusanu, PowerShell serait la voie à suivre. Voici un simple one-liner que vous pouvez utiliser pour créer une tâche planifiée, sans avoir besoin d'écrire un document distinct .ps1 fichier:

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

Vous pouvez créer la tâche planifiée comme ceci:

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

Cet exemple définit l'exécution de la tâche quotidienne, - consulter les schtasks.exe la documentation pour plus d'options.

42voto

Remus Rusanu Points 159382

Vous pouvez planifier un script PowerShell . PS est assez puissant et vous donne accès à l’ensemble du .Net Framework ainsi qu’au changement. Voici un exemple:

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

18voto

RickNZ Points 12053

Une autre option est VB Script. Par exemple (enregistrer en tant que fichier.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..."
 

5voto

Jacob Mattison Points 32137

Il existe des versions Windows des outils de requête http les plus courants en ligne de commande, tels que cURL et wget . Vous pourriez certainement créer une tâche planifiée qui en exécuterait une. Je l'ai également fait à partir d'un script d'hôte de script Windows, si vous aviez besoin de créer ou de créer des paramètres d'URL à la volée, etc.

-1voto

Mark Seemann Points 102767

Utilisez WebRequest.Create pour créer un nouvel objet HttpWebRequest et demander la page Web.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X