Script Batch téléchargement http

Script Batch téléchargement http - Shell/Batch - Programmation

Marsh Posté le 17-10-2009 à 15:21:13    

Bonjour all,
 
 
quelqu'un pourrais me faire un petit script batch pour télécharger deux fichiers via http :
en vérifiant le nom,  
si le nom est identique alors on annule le téléchargement,
si le nom est différent (chiffre supérieur) alors on supprime l'ancien et on télécharge le fichier.
 
Les noms des fichiers sont noté monfichier-503-i386-CD-1.iso, monfichier-504-i386-CD-1.iso etc....
 
 
Merci d'avance.

Reply

Marsh Posté le 17-10-2009 à 15:21:13   

Reply

Marsh Posté le 17-10-2009 à 19:37:04    

Tu peux utiliser cURL -sfI

Reply

Marsh Posté le 17-10-2009 à 19:41:58    

sous windows ? :D

Reply

Marsh Posté le 17-10-2009 à 19:48:14    

Reply

Marsh Posté le 17-10-2009 à 20:31:08    

anglais :s ok merci, je vais voir...

 


si quelqu'un à un script batch, je suis toujours preneur... moi et l'anglais font deux :D :(


Message édité par eric6779 le 17-10-2009 à 20:40:25
Reply

Marsh Posté le 17-10-2009 à 20:56:11    

Code :
  1. >cURL -sfI http://www.google.fr/intl/fr_fr/images/logo.gif
  2. HTTP/1.1 200 OK
  3. Content-Type: image/gif
  4. Last-Modified: Wed, 07 Jun 2006 19:44:03 GMT
  5. Date: Thu, 15 Oct 2009 12:20:43 GMT
  6. Expires: Fri, 15 Oct 2010 12:20:43 GMT
  7. Server: gws
  8. Content-Length: 8866
  9. Cache-Control: public, max-age=31536000
  10. Age: 196376
  11. X-XSS-Protection: 0
  12. >cURL -sfI http://www.google.fr/intl/fr_fr/images/logo.gif>NUL
  13. & IF NOT ERRORLEVEL 1 cURL -o logo.gif http://www.google.fr/intl/fr_fr/images/logo.gif
  14.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  15.                                  Dload  Upload   Total   Spent    Left  Speed
  16. 100  8866  100  8866    0     0  28416      0 --:--:-- --:--:-- --:--:-- 70928
  17. >cURL -sfI http://www.google.fr/intl/fr_fr/images/loga.gif>NUL
  18. & IF NOT ERRORLEVEL 1 cURL -o logo.gif http://www.google.fr/intl/fr_fr/images/logo.gif
  19. >

Reply

Marsh Posté le 17-10-2009 à 21:11:00    

oui facile.... j'ai tout compris :D
 
logo.gif > facile mais quand le nom est fichier-503-i386 et qu'il est modifié toutes les semaines ?

Reply

Marsh Posté le 17-10-2009 à 21:15:06    

l'hypothèse c'est que dans ton système de fichiers tu as "monfichier-503-i386-CD-1.iso", et seulement si "monfichier-504-i386-CD-1.iso" existe sur le serveur alors tu le télécharges, après avoir supprimé "monfichier-503-i386-CD-1.iso", et ainsi de suite ?

Reply

Marsh Posté le 17-10-2009 à 22:02:03    

tout à fait...

Reply

Marsh Posté le 17-10-2009 à 22:13:11    

Vaguement testé mais ça pourrait faire l'affaire
 

Code :
  1. FOR /F "TOKENS=2,3 DELIMS=-" %%A IN ('DIR /B monfichier-???-i386-CD-1.iso') DO SET /A Numero=%%A +1
  2. cURL -sfI URL/monfichier-%Numero%-i386-CD-1.iso>NUL &IF NOT ERRORLEVEL 1 (
  3. DEL monfichier-???-i386-CD-1.iso
  4. cURL -o monfichier-%Numero%-i386-CD-1.iso URL/monfichier-%Numero%-i386-CD-1.iso
  5. )


 
je suppose dans cette proposition, que le batch se trouve dans le même répertoire que ton unique fichier initial "monfichier-(n)-i386-CD-1.iso", et qu'"URL" représente le répertoire racine de ton serveur, où se trouve éventuellement "monfichier-(n+1)-i386-CD-1.iso"

Reply

Marsh Posté le 17-10-2009 à 22:13:11   

Reply

Marsh Posté le 17-10-2009 à 22:15:40    

l'url du fichier est externe (http)....

Reply

Marsh Posté le 17-10-2009 à 22:29:10    

je croyais qu'on s'était compris pourtant http://forum.hardware.fr/hfr/Progr [...] m#t1932792
ta réponse à à 22:02:03 m'a laissé comprendre que tu comparais la version d'un fichier sur ton ordi avec la version d'un fichier sur le serveur (http), ceci dit par rapport à l'énoncé ça sème un peu le doute

Reply

Marsh Posté le 17-10-2009 à 22:34:19    

je reprend car ta réponse de 22h13 m'a mis un doute ^^
 
Actuellement j'ai le fichier stocké sur le DD que je met à jour manuellement pour le moment à partir d'un lien http donc avant de faire la MAJ, je le supprime puis je télécharge.... C'est mieux ?

Reply

Marsh Posté le 17-10-2009 à 22:44:43    

ben si c'est ça la commande précédente devrait fonctionner. Explications :
 

Code :
  1. FOR /F "TOKENS=2,3 DELIMS=-" %%A IN ('DIR /B monfichier-???-i386-CD-1.iso') DO SET /A Numero=%%A +1


 
admettons que dans le répertoire courant tu as un seul fichier "monfichier-???-i386-CD-1.iso", par exemple monfichier-503-i386-CD-1.iso : la commande ci-dessus affecte à la variable Numero la valeur 503 augmentée de 1, càd 504
 

Code :
  1. cURL -sfI URL/monfichier-%Numero%-i386-CD-1.iso>NUL &IF NOT ERRORLEVEL 1


 
==> cURL teste maintenant, sur le site web, si le fichier URL/monfichier-%Numero%-i386-CD-1.iso, càd monfichier-504-i386-CD-1.iso existe. Si c'est bien le cas :
 

Code :
  1. DEL monfichier-???-i386-CD-1.iso


 
==> le fichier monfichier-503-i386-CD-1.iso dans le répertoire courant est supprimé (d'ailleurs attention, écrit comme ça, tout fichier de la forme monfichier-???-i386-CD-1.iso sera supprimé)
 

Code :
  1. cURL -o monfichier-%Numero%-i386-CD-1.iso URL/monfichier-%Numero%-i386-CD-1.iso


 
==> le fichier URL/monfichier-504-i386-CD-1.iso est téléchargé
 
"URL" est bien entendu une adresse de type Http, par exemple : http://mon.site.web/monfichier-504-i386-CD-1.iso

Reply

Marsh Posté le 17-10-2009 à 22:48:16    

oki merci, je te dirais si cela fonctionne ;)
 
Petite question : je dois l'enregistrer sous quel format ? .bat ?  
 
car il sera exécuté via les tâches planifiées....

Reply

Marsh Posté le 17-10-2009 à 22:54:17    

oui, .bat et il te faut cURL soit dans un des chemins du Path, soit dans le même répertoire. J'insiste sur les conditions, dans ce répertoire, il faut également le dernier fichier "monfichier-???-i386-CD-1.iso" car c'est à partir de lui que la recherche de la version suivante va se faire. Si la recherche sur le serveur est positive, le précédent sur ton dd sera définitivement supprimé, sans retour arrière possible (si tu ne le souhaites pas tu peux utilser la commande MOVE au lieu de DEL, histoire de le déplacer)

Reply

Marsh Posté le 20-10-2009 à 12:02:18    

impeccable ;)
 
est t'il possible de vérifier par la taille ? ou le hash md5 ?

Reply

Marsh Posté le 20-10-2009 à 12:27:43    

MD5 je ne sais pas, pour la taille voici une possibilité
 

Code :
  1. >cURL -sfI http://www.alt-shift-return.org/Info/Fichiers/GenProc.zip
  2. HTTP/1.1 200 OK
  3. Date: Tue, 20 Oct 2009 10:14:13 GMT
  4. Server: Apache
  5. Last-Modified: Thu, 15 Oct 2009 21:15:58 GMT
  6. ETag: "a7c43e8-1df1c2-4ad7910e"
  7. Accept-Ranges: bytes
  8. Content-Length: 1962434
  9. Content-Type: application/zip


 

Code :
  1. >cURL -sfI http://www.alt-shift-return.org/Info/Fichiers/GenProc.zip | Findstr "Content-Length:"
  2. Content-Length: 1962434

Reply

Marsh Posté le 20-10-2009 à 20:34:03    

Je n'obtiens pas la taille du fichier .iso en faisant Curl -sfI....

Reply

Marsh Posté le 20-10-2009 à 20:37:20    

Ben ça te donne quoi  
 

Code :
  1. cURL -sfI URL/ton_fichier_iso

 
 
?

Reply

Marsh Posté le 20-10-2009 à 20:46:09    

eZula a écrit :

Ben ça te donne quoi  
 

Code :
  1. cURL -sfI URL/ton_fichier_iso

 
 
?


 

Code :
  1. HTTP/1.1 302 Found
  2. Date: Tue, 20 Oct 2009 18:44:59 GMT
  3. Server: Apache/2.2.9 (Unix)
  4. Content-Type: text/html; charset=iso-8859-1


 

Reply

Marsh Posté le 20-10-2009 à 21:03:47    

Apparemment l'info n'est pas toujours transmise en amont et la seule solution serait de voir si tu peux faire qquechose au niveau du serveur http://curl.haxx.se/mail/archive-2002-08/0059.html en tout cas avec cURL.
Bon, le mail est un peu ancien, mais là j'avoue que ça dépasse mes compétences.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed