Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 3 sur 9
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8, 9  >
Télécharger, convertir et renommer
Auteur Message
Répondre en citant
Message Télécharger, convertir et renommer 
Revue du message précédent :

Ben c'est pareil que celui que je désire en fait...
sauf que le mien utilise le navigateur par défaut toi il utilise IE
Et le problème c'est encore la fenêtre de validation et le dossier cible

Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Télécharger, convertir et renommer 
un autre code mais ça reste le dossier à choisir Laughing
Code:
URL = "https://URL"
Set ws = CreateObject("wscript.Shell")
ws.run url
wscript.sleep 5000
ws.sendkeys "{enter}"





______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message Télécharger, convertir et renommer 
ben ouai ça ne me sert à rien, là c'est exactement la même chose que

Code:
@echo off
for /f "delims=" %%a in (url.txt) do start %%a


sauf que toi c'est une seule url
et en vbs

je ne veux aucune manipulation de la part de l'utilisateur.
On double clic et puis basta



Répondre en citant
Message Télécharger, convertir et renommer 
.

je viens de faire ça, faut améliorer encore le script, mais ça fonctionne


Code:


@echo off
set "url_list_name=url_list.txt"
if not exist "%url_list_name%" echo error, "%url_list_name%" n'exist pas! & pause& goto :eof
rem if not exist import.vbs call :gen_import_vbs
call :gen_import_vbs
for /f "usebackq tokens=*" %%i in ("%url_list_name%") do call :download_file "%%~i"
pause
goto end

:download_file
echo download %~1
cscript //nologo import.vbs "/input:%~1" "/output:%~nx1"
goto :eof

:gen_import_vbs
(
echo const option_type_binary= 1
echo const option_save_and_overwrite= 2
echo const option_save_if_not_exist= 1
echo target_link= WScript.Arguments.Named^("input"^)
echo file_save_name = WScript.Arguments.Named^("output"^)
echo set XmlObject= CreateObject^("MSXML2.XMLHTTP"^)
echo set AdoStream= CreateObject^("ADODB.Stream"^)
echo XmlObject.open "GET", target_link, false
echo XmlObject.send^(^)
echo AdoStream.open
echo AdoStream.Type= option_type_binary
echo AdoStream.Write XmlObject.ResponseBody
echo AdoStream.SaveToFile file_save_name, option_save_and_overwrite
)>import.vbs
goto :eof

:end
rem if exist import.vbs del import.vbs




url_list.txt

contient juste ça: https://www.b-and-you.fr/static/pdf/tarifs.pdf



Répondre en citant
Message Télécharger, convertir et renommer 
ça ne fonctionne pas sur mon lien :/

ça télécharge bien les autres liens mais pas le mien...



Répondre en citant
Message Télécharger, convertir et renommer 
.


Sans le lien en question, je ne peux pas trouver le problème qu'il te pose,
et donc, je ne peux pas non plus te proposer une solution, désolé...



Répondre en citant
Message Télécharger, convertir et renommer 
.

Voilà qui j'espère répondra à ton besoin en attendant quelques petites retouches :

le code .cmd

Code:
@echo off
set "url_list_name=url_list.txt"
set "vbs_downloader_name=vbs_downloader_engine"
if not exist "%url_list_name%" echo error, "%url_list_name%" n'exist pas! & pause& goto :eof
call :gen_downloader
if not exist "%vbs_downloader_name%" echo error, "%vbs_downloader_name%" n'exist pas! & pause& goto :eof
for /f "usebackq tokens=*" %%i in ("%url_list_name%") do call :download_file "%%~i"
rem del "%vbs_downloader_name%"
pause
goto :eof

:download_file
echo downloading "%~1"
cscript //nologo //e:vbscript "%vbs_downloader_name%" "/input:%~1" "/output:%~nx1"
if errorlevel 1 echo error
goto :eof

:gen_downloader
(
echo.function getFileName^(content^)
echo.  if content= "" then
echo.    getFileName= ""
echo.    exit function
echo.  end if
echo.  set regEx= CreateObject^("VbScript.Regexp"^)
echo.  regEx.Pattern= "filename=\x22([^\x22]+)\x22"
echo.  getFileName= ^(regEx.Execute^(content^)^)^(0^).SubMatches^(0^)
echo.end function
echo.
echo.function main^(^)
echo.  target_link= WScript.Arguments.Named^("input"^)
echo.  set XMLObject= CreateObject^("MSXML2.XMLHTTP"^)
echo.  XMLObject.open "GET", target_link, false
echo.  XMLObject.send^(^)
echo.  if XMLObject.status = 200 then
echo.    set ADOStream= CreateObject^("ADODB.Stream"^)
echo.    ADOStream.open
echo.    ADOStream.Type= 1' option_type_binary
echo.    ADOStream.Write XMLObject.ResponseBody
echo.    file_save_name= getFileName^(XMLObject.getResponseHeader^("Content-Disposition"^)^)
echo.    if file_save_name= "" then
echo.      file_save_name = WScript.Arguments.Named^("output"^)
echo.    end if
echo.    ADOStream.SaveToFile file_save_name, 2 'option_save_and_overwrite
echo.    errorlevel=Err.Number
echo.    AdoStream.Close
echo.  end if
echo.    main= errorlevel
echo.end function
echo.
echo.WSCript.Quit^(main^(^)^)
)>"%vbs_downloader_name%"
goto :eof


le contenu de url_list.txt :

Code:
https://www.b-and-you.fr/static/pdf/tarifs.pdf
http://code.kliu.org/misc/inlinedisposition/attachtest.pl




Répondre en citant
Message Télécharger, convertir et renommer 
Salut temp
Bravo je crois que ça marche avec ce dernier code il génère bien le nom du fichier , je l'ai testé Okay
Bravo +1 Okay




______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message Télécharger, convertir et renommer 
Alors là un grand merci.
ça fonctionne super bien.

Merci énormément

Petite question, on peut supprimer le vbs créé ensuite ?
j'ai essayé d'ajouter
Code:
Del vbs_downloader_engine.vbs

mais ça ne le supprime pas.

Et également la fermeture de la fenêtre de contrôle sas qu'on appuie sur une touche ? ^_^

En tout cas merci, je commençais à penser que ce n'était pas possible...



Répondre en citant
Message Télécharger, convertir et renommer 
.

bon ben c'est cool ^^

pour ta demande, oui ça a été prévu

sur la ligne 8 "rem del "%vbs_downloader_name%"" il faut supprimer juste le "rem"
et
sur la ligne 9 "pause" faut supprimer le mot "pause" ou si tu veux laisser un temps de lecture avant fermeture
tu mets un "ping -n 3 127.0.0.1 >nul" pour un délais de 3 secondes avant la fermeture donc.

ps: j''avais remanié un peu la source après publication,
je posterai la mise à jour quand elle sera un peu mieux élaboré.



Dernière édition par temp le Mer 23 Juil 2014 - 09:49; édité 1 fois
Répondre en citant
Message Télécharger, convertir et renommer 
Super merci Temp (je viens de lire ton message)

Bon donc finalement le code final est le suivant :

Code:
@echo off

:: *************************************Partie téléchargement********************************************************
:: Téléchargement des url

set "url_name=url.txt"
set "vbs_downloader_name=vbs_downloader_engine"
if not exist "%url_name%" echo error, "%url_name%" n'exist pas! & pause& goto :eof
call :gen_downloader
if not exist "%vbs_downloader_name%" echo error, "%vbs_downloader_name%" n'exist pas! & pause& goto :eof
for /f "usebackq tokens=*" %%i in ("%url_name%") do call :download_file "%%~i"
Del "%vbs_downloader_name%"
ping -n 3 127.0.0.1 >nul
goto :eof

:download_file
echo downloading "%~1"
cscript //nologo //e:vbscript "%vbs_downloader_name%" "/input:%~1" "/output:%~nx1"
if errorlevel 1 echo error
goto :eof

:gen_downloader
(
echo.function getFileName^(content^)
echo.  if content= "" then
echo.    getFileName= ""
echo.    exit function
echo.  end if
echo.  set regEx= CreateObject^("VbScript.Regexp"^)
echo.  regEx.Pattern= "filename=\x22([^\x22]+)\x22"
echo.  getFileName= ^(regEx.Execute^(content^)^)^(0^).SubMatches^(0^)
echo.end function
echo.
echo.function main^(^)
echo.  target_link= WScript.Arguments.Named^("input"^)
echo.  set XMLObject= CreateObject^("MSXML2.XMLHTTP"^)
echo.  XMLObject.open "GET", target_link, false
echo.  XMLObject.send^(^)
echo.  if XMLObject.status = 200 then
echo.    set ADOStream= CreateObject^("ADODB.Stream"^)
echo.    ADOStream.open
echo.    ADOStream.Type= 1' option_type_binary
echo.    ADOStream.Write XMLObject.ResponseBody
echo.    file_save_name= getFileName^(XMLObject.getResponseHeader^("Content-Disposition"^)^)
echo.    if file_save_name= "" then
echo.      file_save_name = WScript.Arguments.Named^("output"^)
echo.    end if
echo.    ADOStream.SaveToFile file_save_name, 2 'option_save_and_overwrite
echo.    errorlevel=Err.Number
echo.    AdoStream.Close
echo.  end if
echo.    main= errorlevel
echo.end function
echo.
echo.WSCript.Quit^(main^(^)^)
)>"%vbs_downloader_name%"
goto :eof

:: **************************************Partie Conversion*******************************************************
:: Convert with PDFCreator (Création d'un script .vbs qui est supprimé après l'exécution)

mode con cols=80 lines=5 & color 9B
Title Generer le vbscript pour la conversion en PDF avec PDFCreator.exe by Hackoo
(
echo Option Explicit
echo Const maxTime = 60    ' in seconds
echo Const sleepTime = 250 ' in milliseconds
echo Dim objArgs, ifname, fso, PDFCreator, DefaultPrinter, ReadyState, _
echo i, c, AppTitle, Scriptname, ScriptBasename
echo Set fso = CreateObject("Scripting.FileSystemObject"^)
echo Scriptname = fso.GetFileName(Wscript.ScriptFullname^)
echo ScriptBasename = fso.GetFileName(Wscript.ScriptFullname^)
echo AppTitle = "PDFCreator - " ^& ScriptBaseName
echo Set PDFCreator = Wscript.CreateObject("PDFCreator.clsPDFCreator", "PDFCreator_"^)
echo PDFCreator.cStart "/NoProcessingAtStartup"
echo With PDFCreator
echo    .cOption("UseAutosave"^) = 1
echo    .cOption("UseAutosaveDirectory"^) = 1
echo    .cOption("AutosaveFormat"^) = 0 'La valeur 0 = PDF La valeur 1 = PNG
echo    DefaultPrinter = .cDefaultprinter
echo    .cDefaultprinter = "PDFCreator"
echo    .cClearcache
echo    .cPrinterStop = false
echo End With
echo For each ifname in FSO.GetFolder(GetPath(^)^).Files
echo    With PDFCreator
echo        If Not fso.FileExists(ifname^) Then
echo            MsgBox "Il n'y a pas de fichier : " ^& ifname, vbExclamation + vbSystemModal, AppTitle
echo            Exit For
echo        End If
echo        if Not .cIsPrintable(CStr(ifname^)^) Then
echo            MsgBox "Conversion : " ^& ifname ^& vbcrlf ^& vbcrlf ^& _
echo            "Une erreur s'est produite est: Le fichier n'est pas imprimable !", vbExclamation + vbSystemModal, AppTitle
echo            Exit For
echo            Wscript.Quit
echo        End if
echo    If Ucase(fso.GetExtensionName(ifname.Name^)^)="PPT" Or Ucase(fso.GetExtensionName(ifname.Name^)^)="PPTX" Then
echo        ReadyState = 0
echo        .cOption("AutosaveDirectory"^) = fso.GetParentFolderName(ifname^) 'Le dossier pour sauvegarder les fichiers convertis en PDF
echo        .cOption("AutosaveFilename"^) = fso.GetBaseName(ifname^)
echo        .cPrintfile cStr(ifname^)
echo        c = 0
echo Do While (ReadyState = 0^) and (c ^< (maxTime * 1000 / sleepTime^)^)
echo            c = c + 1
echo            Wscript.Sleep sleepTime
echo Loop
echo        If ReadyState = 0 then
echo            MsgBox "Conversion : " ^& ifname ^& vbcrlf ^& vbcrlf ^& _
echo            "Une erreur s'est produite est : Le temps est écoulé !", vbExclamation + vbSystemModal, AppTitle
echo            Exit For
echo        End If
echo      End If
echo    End With
echo Next
echo With PDFCreator
echo    .cDefaultprinter = DefaultPrinter
echo    .cClearcache
echo    WScript.Sleep 200
echo    .cClose
echo End With
echo ^'****************************************************************************************************
echo Public Sub PDFCreator_eReady(^)
echo    ReadyState = 1
echo End Sub
echo ^'****************************************************************************************************
echo Public Sub PDFCreator_eError(^)
echo    MsgBox "An error is occured!" ^& vbcrlf ^& vbcrlf ^& _
echo    "Error [" ^& PDFCreator.cErrorDetail("Number"^) ^& "]: " ^& PDFcreator.cErrorDetail("Description"^), vbCritical + vbSystemModal, AppTitle
echo    Wscript.Quit
echo End Sub
echo  ^'****************************************************************************************************
echo Function GetPath(^)
echo Dim path
echo   path = WScript.ScriptFullName
echo   GetPath = Left(path, InStrRev(path, "\"^)^)
echo End Function
 ) > tmp.vbs
 echo Generer le vbscript pour la conversion en PDF avec PDFCreator.exe
 Taskkill /F /IM PDFCreator.exe > Nul
 Start /Wait tmp.vbs
 Del tmp.vbs

:: **************************************Partie Renommage*******************************************************
:: Rename with actual date at then end of name

setlocal enableDelayedExpansion
for %%F in (*.pdf) do (
:: if (%%F NEQ *_%date:~3,2%%date:~-4%.pdf)
:: On définit une variable nom qui correspond au nom du fichier en traitement.
  set "name=%%F"
:: On dit que le nom est égal à l'ancien nom avec son extension et en plus le mois et l'année actuels
  ren "!name!" "!name:.pdf=_052014.pdf!"
)


Mais je ne peux pas convertir mon fichier.
Je ne comprend pas pourquoi.
Même chose pour le renommage...
Il ne se fait plus.

Et lors de la conversion j'avais pu constater quand ça fonctionnait que je me retrouvé avec une marge blanche tout autour du document... quelqu'un sait comment y remédier ?



Répondre en citant
Message Télécharger, convertir et renommer 
Code:
:: **************************************Partie Conversion*******************************************************
:: Convert with PDFCreator (Création d'un script .vbs qui est supprimé après l'exécution)

mode con cols=80 lines=5 & color 9B



là, sur la ligne vide, il faut mettre une étiquette, par exemple ":convert"

et

à la place du "goto :eof" là, juste après le "pause" tu mets "goto convert"



Répondre en citant
Message Télécharger, convertir et renommer 
ok c'est donc à ça que servent les goto et les :*
merci beaucoup



Répondre en citant
Message Télécharger, convertir et renommer 
.


oui ça s'appelle des branchements



Répondre en citant
Message Télécharger, convertir et renommer 


voilà sur la conversion l'erreur que j'ai :/



Répondre en citant
Message Télécharger, convertir et renommer 
.

c'est tmp.vbs qui est en cause, vraisemblablement il essai de faire imprimer vbs_downloader_engine
faut voir avec Hackoo
mais avant, supprime déjà le "rem" devant le "del"



Répondre en citant
Message Télécharger, convertir et renommer 
Protégé non, car quand je le lance seul le script conversion ça fonctionne.

Je vais regarder un peu.
J'ai une réunion là et en début d'aprem aussi.
Je serait de nouveau là vers 15h30 pour vous dire

Bon après les premiers tests, la conversion ne fonctionne pas tout simplement car le fichier n'est pas encore téléchargé...
En gros si je lance le script plusieurs fois de suite il converti les fichiers téléchargés la fois d'avant mais pas ceux de l'exécution en cours...



Message Télécharger, convertir et renommer 


Montrer les messages depuis:
Répondre au sujet Page 3 sur 9
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8, 9  >
  



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