Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] Passer curl en variable dans une boucle ?
Auteur Message
Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Bonsoir,

Code:

@echo off

setlocal enableextensions

set URL=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
set curl=".\bin\curl"
set cut=".\bin\cut"
set grep=".\bin\grep"


for /f "tokens=*" %%a in (`%curl% %URL% ^| %grep% -E "otn-pub^|windows-i586" index.html| grep -v "demo" | .\bin\cut -d \" -f12`) do ( @set this_url=%%a)
ECHO %this_url%

pause


me retourne : La syntaxe de la commande n’est pas correcte.

J'ai essayé diverse méthodes mais je n'y arrive pas à passer la commande curl en variable...

J'utilise grep car plus facile pour ceux que je veux faire...


Merci pour vos suggestions.



Dernière édition par Owned le Mar 12 Sep 2017 - 17:47; édité 3 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Oui dans un fichier script ta variable de substitution doit s'écrire "%%a" et non pas "%a".
Après tu chaines trop de grep, alors que si tu avais utilisé les expressions régulières (regexp), une
seule commande aurait suffi.

J'ai parlé, il me semble, sur ce même forum d'un outil extra, xidel qu'il s'appelle.
Pour extraire des données web, il est vraiment au top.

Edit:

oui, c'est bien xidel
-> http://batch.xoo.it/t5800-Comment-filter-une-liste-de-chaines-de-caracteres…



Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
jay a écrit:
Oui dans un fichier script ta variable de substitution doit s'écrire "%%a" et non pas "%a".
Après tu chaines trop de grep, alors que si tu avais utilisé les expressions régulières (regexp), une
seule commande aurait suffi.

J'ai parlé, il me semble, sur ce même forum d'un outil extra, xidel qu'il s'appelle.
Pour extraire des données web, il est vraiment au top.

Edit:

oui, c'est bien xidel
-> http://batch.xoo.it/t5800-Comment-filter-une-liste-de-chaines-de-caracteres…


je corrige, désolé je me suis pas relus mais j'ai bien %%a dans le batch.

certes il peut être optimisé mais pour le moment j'aimerais que ça passe ^^

Je met en favoris xidel pour plus tard.



Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Avec tes filtres, la requête produit plus d'une dizaine de résultats.
Ça passe, mais je suis pas sûr que c'est ce que tu en attendais.

Code:


set "url=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
set "curl=.\bin\curl"
set "cut=.\bin\cut"
set "grep=.\bin\grep"

for /f "tokens=*" %%a in ('%curl% -sLA "" "%url%" ^| %grep% -E "otn-pub|windows-i586" ^| %grep% -v "demo" ^| %cut% -d "\"" -f12 ') do @echo %%~a

pause


Citation:

htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-arm32-vfp-hflt.tar.gz
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-arm64-vfp-hflt.tar.gz
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-i586.rpm
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-i586.tar.gz
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-macosx-x64.dmg
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-solaris-sparcv9.tar.Z
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-solaris-sparcv9.tar.gz
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-solaris-x64.tar.Z
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-solaris-x64.tar.gz
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-windows-i586.exe
htt*://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-windows-x64.exe


ou peut-être ne voulais-tu que l'avant-dernière ligne. Si c'est le cas, alors il faut remplacer dans le code
%grep% -E "otn-pub|windows-i586"
par
%grep% -E "otn-pub.*windows-i586"



Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Merci pour ton aide cependant ton code ne passe pas chez moi, il se ferme automatiquement dès l'exécution...

Dans une invite de commande, ça me retourne :
Citation:

E:\Unattended\jdk-windows-aio>for /f "tokens=*" %a in ('%curl% -sLA "" "%URL%" ^| %grep% -E "otn-pub.*windows-i586" ^| %grep% -v "demo" ^| %cut% -d "\"" -f12 ') do @echo %~a
Plus ?


Oui c'est bien la dernière, merci, je ne suis pas à l'aide avec les expressions régulières...



Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Dans ton script initial, tu "set" tes commandes avec des chemins relatifs,
donc si à l'exécution de ta commande for, t'es pas dans le bon répertoire
de travail que tu laisses sous entendre, ça ne fonctionnera pas.

alors
soit tu te places dans le bon répertoire de travail, celui qui contient \bin\curl.
Soit tu ajoutes le chemin de "\bin" à ton path.
Soit tu "set" tes commandes avec des chemins absolus.

remplace aussi
%cut% -d "\"" -f12
par
%cut% -d^"\"" -f12



Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Merci c'est impeccable avec l'échappement pour cut.

Le problème était les "" dans les set. Okay



Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Voici un bout de code qui permet d'extraire les infos, histoire d'être
moins sujet aux aléas de formatage et d'ordonnancement des données.
Bien sûr, ça ne remplace pas le bon usage d'outils adéquat, c'est juste
pour l'exercice et illustrer, partager une technique ou deux.


Code:

@echo off
set data="title": "Windows x86", "size" :"190.94 MB","filepath"  :  "http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-windows-i586.exe", "MD5":"8f189a37b323d81c0f0e013cf3070c93", "SHA256":"f2c6657812986aa4b992173da495cdc3620edcdc26927860d7d920958f12575c"
call :export_json_fields %data:,=§%
echo title     %title%
echo size      %size%
echo MD5       %MD5%
echo SHA256    %SHA256%
echo filepath  %filepath%
pause
goto :eof

:export_json_fields
for /f "tokens=1,* delims=§" %%i in ('echo.%*') do (
  for /f "tokens=1,* delims=: " %%m in ('echo.%%i') do set "%%~m=%%~n"
  call :export_json_fields %%j
)
goto :eof



pour récupérer data depuis l'url du sujet
for /f "tokens=2 delims={}" %%a in ('%curl% -sLA "" "%url%" ^| %grep% -E "otn-pub.*windows-i586\.exe" ') ...
ou
for /f "tokens=2 delims={}" %%a in ('%curl% -sLA "" "%url%" ^| findstr /i "otn-pub.*windows-i586\.exe" ') ...



Répondre en citant
Message [R] Passer curl en variable dans une boucle ? 
Merci pour le partage Okay



Message [R] Passer curl en variable dans une boucle ? 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch