[R] INI & FTP

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

[R] INI & FTP

#1

Message par Y01 »

Bonjour,

J'ai fait une petite application qui permet, entre autre, de télécharger des fichiers par FTP en fonction du jour de la semaine.

Chaque jour, il y a entre 4 et 8 fichiers à télécharger.

La première version de l'application fonctionne parfaitement car j'ai mis les chemins et les noms des fichiers en "dur" dans l'application.

Le premier problème est que cette manière de faire utilise 800 lignes de code (sans lignes vides), je vous laisse donc imaginer la difficulté pour s'y retrouver.

Le deuxième problème est que j'ai développé cette application pour un service que je vais quitter sous peu. Il n'y aura donc plus de support.

Afin de palier le problème d'ajout ou de suppression de la liste des fichiers à télécharger, j'ai pensé à passer par un fichier INI.

Je ne maitrise malheureusement absolument pas les fichiers INI ni la façon de les utiliser avec AutoIt.

Ce que j'aurais aimé faire, c'est d'avoir la liste des fichiers et leur chemin de téléchargement dans un "bloc" puis un "bloc" par jour avec uniquement le nom des fichiers à télécharger, ce qui permettrais à mes utilisateurs de ne pas avoir de notion AutoIt pour mettre la liste à jour.

Un petit exemple vaut mieux qu'un long discours :

[Fichiers]
fichier1=//serveur1.dossier1.fichier(0)
fichier2=//serveur1.dossier2.fichier(0)
fichier3=//serveur2.dossier.fichier(0)

[Lundi]
fichier1

[Mardi]
fichier2

[Mercredi]
fichier3


Si quelqu'un à une idée de comment faire pour "lier" un nom de fichier du "bloc" [Jour] au chemin du fichier du "bloc" [Fichiers].

Ou au pire, une idée complètement différente mais qui permettrais d'arriver à un résultat similaire et "user friendly".

Merci d'avance !
Modifié en dernier par Y01 le jeu. 11 déc. 2014 15:51, modifié 1 fois.
Y01
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] INI & FTP

#2

Message par DimVar »

Bonjour,

Pour info, ce que vous décrivez comme "bloc" correspond à une "section".
Par chance, Autoit est très bien fourni en function "INI".
J'ai du mal à saisir ce que vous entendez par "lier".
Mais sachez que les sections d'un INI sont très facilement récupérables dans des variables. Il ne vous reste qu'a concaténer les chaines qui vous intéresse.

Cdlt. Dimavr.

[EDIT] j'ai juste du mal à comprendre votre histoire de "." dans le chemin de la section [FICHIERS]
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [..] INI & FTP

#3

Message par Y01 »

En fait, ce que j'entends par "lier", c'est de pouvoir mettre le nom d'un fichier dans la section du jour que je souhaite et que l'application aille directement chercher le chemin du fichier dans la section [Fichiers] sans avoir à réécrire le chemin pour chaque jour.

Les "." remplacent les "/" dans le serveur FTP que j'utilise.
Y01
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] INI & FTP

#4

Message par A2Energie »

Bonjour,

J'verrais bien qq chose dans ce genre :

Code : Tout sélectionner

#include <Date.au3>
Dim $Tab00[0] ; Tabealu du fichier (des liens)
$Jour = _DateToDayOfWeek(@YEAR, @MON, @MDAY) ; Jour de la semaine
$CheminP = "Chemin du fichier principal .ini" ; Fichier qui contient les liens des fichiers jours
$CheminJ = "" ; Chemin du fichier du jour .ini

; lis la ligne du jour
$CheminJ = FileReadLine($CheminP, $Jour)
MsgBox(1,"Lien du jour",$CheminJ)
; Rempli le tableau des liens de la journée.
$Tab00 = FileReadToArray($CheminJ)
MsgBox(1,"Lien 1",$Tab00[1])
; reste à boucler le $Tab00[$i] pour ressortir tous les liens.
 
J'ai pas testé mais on doit pas être très loin de la vérité.
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] INI & FTP

#5

Message par Utilisateur 3309 supprimé »

Bonjour,
pour ce genre de situation personnellement je n'utilise pas autoit mais une simple tache planifiée pour chaque jour de la semaine, avec un batch qui va télécharger les fichiers en question.
Pour telecharger un fichier par FTP il suffit d'utiliser la ligne de commande NCFTPGET (installer NCFTP CLIENT : http://www.ncftp.com/download/) c'est beaucoup plus pratique que d'utiliser la commande DOS FTP.

Donc:
tache planifiée du Lundi, execute le batch LUNDI.BAT
dans lequel on met la ou les commandes:
ncftpget -u user -p password ftp.monsite.com /dossier/fichier1.zip /dossier/fichier1.zip
ncftpget -u user -p password ftp.monsite.com /dossier/fichier2.zip /dossier/fichier2.zip

meme principe pour les autres jours de la semaine.

L'avantage c'est qu'il n'y a pas 800 lignes de code, c'est très facile a comprendre et à maintenir.
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [..] INI & FTP

#6

Message par Y01 »

A2Energie, si je comprends bien, tu utilise 2 fichiers INI ?

Personnellement, j'utilise un bout de code pour définir le jour de la semaine (vu que mes sections sont nommées ainsi) :
► Afficher le texte
Cetipabo, mes utilisateurs (malheureusement, ainsi que moi) n'ont pas de droits d'admin sur les machines, donc les installations d'outil tiers, on oublie.

De plus, outre le fait de télécharger les fichiers, certains sont zippés après téléchargement puis envoyés dans des dossiers sur le réseau (avec accent les dossiers, donc encore un problème avec les Bat) et d'autres fichiers subissent des traitement par AutoIt (d'où les 800 lignes).

Merci quand même de ton idée.
Y01
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] INI & FTP

#7

Message par A2Energie »

Bonjour,

Peut être ne nous sommes nous pas compris,

Permet d'identifier le numéro de la semaine :

Code : Tout sélectionner

$Jour = _DateToDayOfWeek(@YEAR, @MON, @MDAY) ; Jour de la semaine
Permet de lire un fichier ini qui comprend les liens de tes fichier ini de la semaine, premiere ligne tu inscrits le lien de ton fichier ini de lundi deuxieme ligne le lien du fichier de mardi ect...

Code : Tout sélectionner

; lis la ligne du jour
$CheminJ = FileReadLine($CheminP, $Jour)
Puis, il suffit d'ouvrir et de lire le fichier de la journée. (grâce au lien récupéré précédemment).

Code : Tout sélectionner

; Rempli le tableau des liens de la journée.
$Tab00 = FileReadToArray($CheminJ)
MsgBox(1,"Lien 1",$Tab00[1])
; reste à boucler le $Tab00[$i] pour ressortir tous les liens.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] INI & FTP

#8

Message par DimVar »

A2Energie a écrit : Permet de lire un fichier ini qui comprend les liens de tes fichier ini de la semaine, premiere ligne tu inscrits le lien de ton fichier ini de lundi deuxieme ligne le lien du fichier de mardi ect...

Code : Tout sélectionner

; lis la ligne du jour
$CheminJ = FileReadLine($CheminP, $Jour)
Pourquoi utiliser un filereadline alors qu'une flopée de fonctions dédiées à l'INI sont existante ?
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [..] INI & FTP

#9

Message par Y01 »

J'avais bien compris pour les jours, j'ai juste une manière différente de faire.

Par contre, ce que tu propose oblige à avoir un INI par jour et d'avoir les liens des fichiers dans chaque INI.

C'est dérangeant parce-qu'il y aurait redondance au niveau des fichiers qui sont téléchargés plusieurs fois dans la semaine et aussi parce-que les utilisateurs qui devront modifier les INI devront connaitre les chemins des fichiers au lieu de connaitre uniquement leur nom.

Je m'excuse si j'ai du mal à me faire comprendre, ce n'est pas un sujet évident surtout quand on ne peut pas donner d'exemple concret.
Y01
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] INI & FTP

#10

Message par A2Energie »

Bonjour,

A2Energie <- hors sujet :oops:

https://www.autoitscript.com/autoit3/do ... ection.htm
:wink:

Merci DimVar
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] INI & FTP

#11

Message par DimVar »

Y01 a écrit :ce n'est pas un sujet évident surtout quand on ne peut pas donner d'exemple concret.
Certes, sans le code ni le contexte, c'est delicat de corriger un code...
N'avez vous pas un exemple simple sur un serveur FTP accessible (meme perso) sur lequel nous pourrions vous aider ?


Cdlt. Dimvar.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [..] INI & FTP

#12

Message par Y01 »

Voila mon code actuel :
► Afficher le texte
je joins aussi le fichier INI que j'utilise.

Avec ce code, j'arrive à récupérer la section du jour en cours sans problème.

Ce que je veux c'est réussir à lister les fichiers présent dans cette section.

Ensuite, il ne me restera plus qu'à faire en sorte que chaque fichier de cette section récupère son chemin dans la section [Fichiers].
Fichiers joints
FTP.ini
(608 Octets) Téléchargé 68 fois
Y01
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] INI & FTP

#13

Message par DimVar »

Y01 a écrit :VCe que je veux c'est réussir à lister les fichiers présent dans cette section.
Laquelle ?
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [..] INI & FTP

#14

Message par Y01 »

Y01 a écrit : Avec ce code, j'arrive à récupérer la section du jour en cours sans problème.

Ce que je veux c'est réussir à lister les fichiers présent dans cette section.
Chaque jour est une section du fichier INI qui contient une liste de fichier.

ex :

[Jeudi]
fichier5
fichier6
fichier7
fichier8

Actuellement, et si j’exécute le code aujourd'hui, ma variable $section prendra la valeur "Jeudi".

Je veux donc pouvoir lister les fichiers de la section récupérée par $section dans un premier temps.
Y01
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] INI & FTP

#15

Message par A2Energie »

Bonjour,

Le problème est finalement assez simple,
Tu n'identifie pas de valeur à tes keys.

par exemple :

Code : Tout sélectionner

[Lundi]
fichier1=""
fichier3=""
[Mardi]
fichier2=""
fichier3=""
[Mercredi]
fichier1=""
fichier4=""
[Jeudi]
fichier5=""
fichier6=""
fichier7=""
fichier8=""
[Vendredi]
fichier1=""
fichier9=""
Cela devrait régler ton problème.

Et aussi : est plus simple que des If :wink:

Code : Tout sélectionner

Local $aDay[8] = [ "", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"]
$jour = $aDay[@WDAY]
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] INI & FTP

#16

Message par DimVar »

Y01 a écrit : Actuellement, et si j’exécute le code aujourd'hui, ma variable $section prendra la valeur "Jeudi".
Normal, puisque $section est le resultat d'un IniReadSectionNames.
Ce que tu veux est le retour de IniReadSection.


Cdlt, Dimvar.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [..] INI & FTP

#17

Message par Y01 »

Je suis arrivé à mes fins !

Voici le code fonctionnel :
► Afficher le texte
Ainsi que le fichier INI utilisé pour l'exemple.

Pour explication de mes modifications (et pour aider les futurs lecteurs qui pourraient avoir ce problème) :

- J'ai utilisé la fonction de A2Energie pour lister les jours (merci à toi :))
- J'ai récupéré la section correspondante au jour en cours
- J'ai fait une sorte de liaison SQL entre mes sections en concaténant 3 variables ($fichiers[$aArray[$i][1]][1])

Que veux dire cette ligne ? $fichiers[$aArray[$i][1]][1]

$fichiers va lire la section [Fichiers]
$aArray va lire la section du jour en cours
Le premier [1] (celui la : $aArray[$i][1]) permet de récupérer le chiffre que j'ai assigné à mes fichiers.
Le deuxième [1] (celui ci : $fichiers[$aArray[$i][1]][1]) m'affiche le chemin complet de mon fichier.
Le fait d'utiliser le premier [1] indique directement au deuxième [1] sur quelle ligne il doit se placer pour récupérer le chemin du fichier.

J'espère que les explications sont moins difficiles à comprendre que le problème :oops:

Merci à tous !
Fichiers joints
FTP.ini
(565 Octets) Téléchargé 68 fois
Y01
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] INI & FTP

#18

Message par mikell »

► Afficher le textefichier ini
Attention aux "=" dans le ini après fichier1, fichier2 etc
► Afficher le textecode
8)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: [R] INI & FTP

#19

Message par Y01 »

C'est agaçant de voir à quel point un problème qui prend autant de temps pour certains peut être résolu aussi vite par d'autre et d'une manière tellement plus propre :shock:

Merci Mikell, ton code fonctionne bien mieux que le mien.
Y01
Répondre