Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer un fichier CSV sur internet avec un .bat

    30 mars 2021 à 16:22:35

    Bonjour à tous,

    Je suis complètement perdu et je n'arrive pas à trouver de solution à mon problème.

    J'ai une page internet, pour accéder à mon automate du style " http://IP-Automate/Portal/Portal.mwsl?PriNav=FileBrowseretc... " ...

    Dans cette page internet il y a un fichier CSV qui est générer par mon automate, sa correspond à des logs journalier.

    J'aimerais avec un fichier .bat depuis mon ordinateur, aller récupérer directement et automatiquement le fichier CSV et en déplacer une copie dans un dossier de mon ordinateur avec un système d'archivage.

    Par exemple, premier jour le batch se lance automatique, il récupére le CSV le dépose dans le C: de mon ordinateur et le renomme Automate_DateHeure.csv

    Quelqu'un aurait-il une solution ?

    J'espère que le message est compréhensible.

    Corentin.

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2021 à 22:05:24

      Bonsoir,

      En batch pure, peut-être la commande ' bitsadmin' qui semble être inclus de base, sinon tu seras obligé de passer par un langage tier (vbs, powershell, etc) ou via une commande externe.

      Pour le côté téléchargement, ce lien devrait t'aider (plusieurs solutions sont fournis).

      -
      Edité par Zaibai 30 mars 2021 à 22:10:23

      • Partager sur Facebook
      • Partager sur Twitter
        31 mars 2021 à 7:44:40

        umfred a écrit:

        une solution de départ => https://www.developpez.net/forums/d1503351/general-developpement/programmation-systeme/windows/scripts-batch/telecharger-plusieurs-fichiers-url/ 


        Bonjour,

        Auparavant avant de poster le message, j'ai voulu essayer la méthode de cette personne mais... le dossier se créer sans le fichier.

        Je n'arrive donc pas à la faire fonctionner.

        Zaibai a écrit:

        Bonsoir,

        En batch pure, peut-être la commande ' bitsadmin' qui semble être inclus de base, sinon tu seras obligé de passer par un langage tier (vbs, powershell, etc) ou via une commande externe.

        Pour le côté téléchargement, ce lien devrait t'aider (plusieurs solutions sont fournis).

        -
        Edité par Zaibai il y a environ 9 heures


        Pour la commande bitsadmin voici l'erreur au lancement du batch.

        DISPLAY: 'debjob' TYPE: DOWNLOAD STATE: CANCELLED
        
        PRIORITY: NORMAL FILES: 0 / 1 BYTES: 0 / UNKNOWN
        
        Transfer canceled

        TEST : 

        set url=http://IP_API/FileBrowser/Download?Path=%2FDataLogs%2FAutomate.txt
        set file=file.txt
        certutil -urlcache -split -f %url% %file%
        echo Done.

        En testant cette ligne de code dans un bat, malheureusement, j'ai bien un fichier qui se créer mais c'est le codage HTML de la page

        Je continu mes recherches depuis le lien de Zaibai, je tiendrais au courant si problème résolu

        Merci à vous

        -
        Edité par Cozxs 31 mars 2021 à 8:42:21

        • Partager sur Facebook
        • Partager sur Twitter
          31 mars 2021 à 12:16:22

          tu as testé en modifiant l'adresse source en quelque chose comme http://IP_API/DataLogs/Automate.txt ? (adresse à tester éventuellement dans le navigateur pour voir si il affiche directement le fichier texte)

          Sinon dans le lien Zaibai, (et j'y avais pensé), essai la solution avec curl

          • Partager sur Facebook
          • Partager sur Twitter
            2 avril 2021 à 12:12:15

            alut umfred,

            Je viens d'essayer en tapant l'url :

            http://IP_API/FileBrowser/Download?Path=%2FDataLogs%2FAutomate.txt

            Je tombe sur la page de l'API au niveau de l'arborescence "DataLogs" et un texte rouge m'indique : Impossible de télécharger le fichier


            Le document se trouve dans le dossier DataLogs, photo ci dessous :

            Je vais tester la solution curl de suite, on va voir si c'est possible, mais j'ai l'impression de persister à essayer de faire fonctionner quelque chose qui est impossible 

            bonne journée


            • Partager sur Facebook
            • Partager sur Twitter
              2 avril 2021 à 12:18:55

              Cozxs a écrit:

              Salut umfred,

              Je viens d'essayer en tapant l'url :

              http://IP_API/FileBrowser/Download?Path=%2FDataLogs%2FAutomate.txt

              ça c'est l'adresse que tu nous a donnée plus haut j'avais proposé http://IP_API/DataLogs/Automate.txt mais peut-être testé http://IP_API/DataLogs/ tu as un lien vers la doc de l'API en question ?
              • Partager sur Facebook
              • Partager sur Twitter
                6 avril 2021 à 7:43:39

                salut umfred,

                l'api en question est un S7-1200 de la marque Siemens.

                Cela ne fonctionne pas quand je test un URL différent de celui de base. Avec toutes les fonctions il me télécharge le code HTML de la page. Je pense que ce n'est pas possible

                Voici un URL qui parle de mon problème : 

                https://support.industry.siemens.com/tf/ww/en/posts/download-datalog-files-from-s7-1200/163411?page=0&pageSize=10

                https://support.industry.siemens.com/tf//WW/en/posts/download-data-logs-automatically-from-s7-1200/144672?page=0&pageSize=10

                Je ne retrouve plus la documentation, mais il explique seulement comment faire dan l'automate pour créer des data logs, les explications sur la récupération dans la documentation s'effectue seulement manuellement

                ----------------------------------------------------------------------------------------------------------------

                Problème résolu, enfin !!!

                J'ai trouvé sur le premier lien, télécharger le fichier txt de JLaege, remplacer les XXXX par vos données.

                Passer le fichier en .bat, installer wget (dernière version 1.21.1-1) et le déposer dans system32 du passer.

                Penser aussi à bien indiquer le nom de votre fichier csv qui est téléchargeable, le mien s'appelle Automate.csv, par défaut c'est MyDataLogs.csv

                Le C:\test\Automate.csv qui est à la fin de la deuxième ligne est mon chemin d'enregistrement, à vous de mettre celui que vous souhaitez

                Lancer le bat et le fichier apparaît !

                wget.exe --no-check-certificate --post-data="Redirection&Login=admin&Password=admin&submit=Anmelden" --save-cookies=%temp%\Cookie_File.txt --referer=http://172.26.20.20/Portal/Portal.mwsl?PriNav=Start --keep-session-cookies http://172.26.20.20/FormLogin -O %temp%\Portal.html

                pause

                wget.exe --no-check-certificate --load-cookies=%temp%\Cookie_File.txt -t1 --referer=http://172.26.20.20/Portal/Portal.mwsl?PriNav=FileBrowser http://172.26.20.20/FileBrowser/Download?Path=/DataLogs/Automate.csv -O C:\test\DataLog.csv

                pause

                Encore merci pour votre aide !

                Corentin

                -
                Edité par Cozxs 6 avril 2021 à 8:50:20

                • Partager sur Facebook
                • Partager sur Twitter
                  6 avril 2021 à 10:57:17

                  Je mets ici un message pour que Cozxs puisse mettre sa réponse et sa solution (a priori, son message a dû être pris comme du spam)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 avril 2021 à 11:46:07

                    Problème résolu voici la réponse expliquer pour ceux qui recherche à automatiser la récupération des fichiers générer avec CreateDataLogs et WriteDataLogs depuis un automate S7-1200 et supérieur.

                    1 - Télécharger wget.exe, dernière version qui est actuellement 1.21 elle se trouve sur le net.

                    2 - Dans le zip récupérer wget.exe et le déposer dans votre disque C:/Windows/system32 

                    3 - Dans le code ci-dessous remplacer les XXX par votre adresse IP d'automate, et les XXXX du password et du login, qui permettent la connexion en mode administrateur à la page web de votre automate.

                    Sur la dernière ligne à la fin, bien indiquer le nom de votre fichier dans le dossier DataLogs de l'automate, moi c'était Automate.csv

                    Modifier aussi le chemin dans lequel vous souhaitez l'enregistrer, moi j'avais indiqué : C:/test/DataLogs.csv

                    wget.exe --no-check-certificate --post-data="Redirection&Login=XXXX&Password=XXXX&submit=Anmelden" --save-cookies=%temp%\Cookie_File.txt --referer=http://XXX.XXX.XXX.XXX/Portal/Portal.mwsl?PriNav=Start --keep-session-cookies http://XXX.XXX.XXX.XXX/FormLogin -O %temp%\Portal.html
                    wget.exe --no-check-certificate --load-cookies=%temp%\Cookie_File.txt -t1 --referer=http://XXX.XXX.XXX.XXX/Portal/Portal.mwsl?PriNav=FileBrowser http://XXX.XXX.XXX.XXX/FileBrowser/Download?Path=/DataLogs/Automate.csv -O C:\test\DataLog.csv
                    

                    4 - Changer l'extension du fichier texte en .bat

                    A vous de jouer, normalement vous devriez récupérer votre fichier.

                    @Umfred, j'ai une question quand même, je vais automatiser mon batch avec un planificateur de tache, 

                    J'aimerais pouvoir faire des enregistrements du fichier DataLogs.csv en lui indiquant la date et l'heure dans le nom pour effectuer un archivage horodater à chaque archivage pour ne pas ré-écraser l'ancien fichier csv.

                    Exemple : DataLogs_[Date]_[Heure].csv 

                    As-tu une solution à la question ?

                    En tout cas merci de votre aide,

                    Corentin

                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 mars 2024 à 16:44:39

                      Bonjour,

                      Je travaille actuellement sur le même type de sujet que vous avez réalisé.

                      Hors malgré vous explication je n'arrive pas à faire fonctionné sur mon système.
                      Je travaille sur un automate S7-1500, j'ai bien mon fichier DataLog sur le serveur Web.

                      J'ai reprise votre code, en modifiant correctement les bon paramètre.

                      Hors quand j'execute le script la connexion à la page s'effectue bien.

                      Mais au lieu de me téléchargé le fichier .csv, il m'écrit le html de la page web avez vous une solution ?

                      Voici mon code ci-dessous : 

                      @ECHO OFF
                      for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do set maDate=%%c%%b%%a
                      for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
                      for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b

                      wget.exe --no-check-certificate --post-data="Redirection&Login=Admin&Password=1111&submit=Anmelden" --save-cookies=%temp%\Cookie_File.txt --referer=http://192.168.0.1/Portal/Portal.mwsl?PriNav=Start --keep-session-cookies http://192.168.0.1/FormLogin -O %temp%\Portal.html
                      wget.exe --no-check-certificate --load-cookies=%temp%\Cookie_File.txt -t1 --referer=http://192.168.0.1/Portal/Portal.mwsl?PriNav=FileBrowser http://192.168.0.1/Filebrowser?Path=/DataLogs/MyDataLog.csv -O C:\TEMP\DataLog_%maDate%_%heure%h%minute%.csv

                      PAUSE
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 mars 2024 à 17:21:45

                        il doit manquer la pause entre les 2 wget ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 mars 2024 à 20:11:33

                          J'ai testé en mettant une pause entre les deux wget mais cela ne fonctionne pas.

                          --------------------------------------------------------------------

                          J'ai pu trouvé une solution merci pour votre temps. Voici le code si des personne rencontre des problèmes similaire.

                          @ECHO OFF
                          for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do set maDate=%%c%%b%%a
                          for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
                          for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
                          set IP_API="XXX.XXX.XXX.XXX"

                          wget.exe --no-check-certificate --post-data="Redirection&Login=XXXX&Password=XXXX&submit=Anmelden" --save-cookies=%temp%\Cookie_File.txt --referer=http://%IP_API%/Portal/Portal.mwsl?PriNav=Start --keep-session-cookies http://%IP_API%/FormLogin -O %temp%\Portal.html
                          wget.exe --no-check-certificate --load-cookies=%temp%\Cookie_File.txt -t1 --referer=http://%IP_API%/Portal/Portal.mwsl?PriNav=Filebrowser"&"Path=/DataLogs/ http://%IP_API%/Filebrowser?Path=/DataLogs/MyDataLog.csv"&"RAW -O C:\TEMP\DataLog_%maDate%_%heure%h%minute%.csv

                          PAUSE

                          -
                          Edité par KévinMourie 26 mars 2024 à 8:54:35

                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 mars 2024 à 13:13:38

                            Pour résumé, tu as rajouté "&RAW" à la dernière requête
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Récupérer un fichier CSV sur internet avec un .bat

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            • Editeur
                            • Markdown