[C] Convertir mon batch en autoit

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#21

Message par mikell »

Thierry, tu n'as pas l'impression que labougie voulait y arriver par lui-même ?
En plus tu lui balances un code qui est très bien mais radicalement différent de ce qu'il avait commencé à faire...
C'eût été plus opportun de faire d'abord sur ses bases de départ à lui un code fonctionnel, et de proposer une optimisation ensuite :roll:

Edit
Tlem a écrit :Image
Eh ben si...
Un SplashText qui dit "scanning drive 8" c'est pas top :roll:
Et le code qui s'exécute sur un lecteur CD vide ça envoie un message d'erreur Windows qui bloque le script
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#22

Message par Tlem »

Tu as absolument raison, mais bon TopXm à commencé avant moi. :mrgreen:

Et puis, quitte à passer du temps, autant donner des explications plutôt que de faire petit bout par petit bout. D'autant plus que le code donné est je pense suffisamment parlant pour être à la portée de labougie. ^^
Mikell a écrit :mais radicalement différent
Rhooo, t'exagère quand même. Il est pas si différent que ça mon code ...
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#23

Message par mikell »

Hum TopXm avait donné un indice, pas fait le code complet...
Et puis dans ce qu'il a écrit il y a 2 grosses raisons pour que ça marche pas :wink:

M'enfin bon alors je mets celui-là, moins technique que le tien mais qui correspond mieux à sa démarche initiale (et qui marche, aussi :mrgreen: )
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#24

Message par Tlem »

mikell a écrit :Eh ben si...
Un SplashText qui dit "scanning drive 8" c'est pas top :roll:
Et le code qui s'exécute sur un lecteur CD vide ça envoie un message d'erreur Windows qui bloque le script
Je ne voit pas ou tu as vu un SplashText() dans le code ou quoi que ce soit qui pourrait bloquer. J'ai testé mon code sur un PC dont le lecteur de CD est vide, sans que cela provoque une erreur. Mais bon, ceci dit tu n'a pas tord, il est plus raisonnable d'apprendre les bonnes manières dès le départ et donc de vérifier que le lecteur soit prêt et lisible avant de faire quoi que ce soit. ^^
Et puis If Not FileExists($aDrive[$i] & "\") Then ContinueLoop fait parfaitement l'affaire pour ce type de test.

Edit :
Mikell a écrit :M'enfin bon alors je mets celui-là, moins technique que le tien mais qui correspond mieux à sa démarche initiale (et qui marche, aussi :mrgreen: )
Heuuu ouais, mais bonjour la durée de recherche si il y à plusieurs chaines à rechercher ...

D'accord avec toi pour le code de TopXm, mais bon, je n'avais pas voulu relever. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#25

Message par mikell »

Quand je vois FileWriteLine($LogFile,"ToolSearch by © Labougie") j'imagine que le script peut tourner sur d'autres PC
Et sur mon XP essayer de lire un lecteur CD vide provoque un message d'erreur Windows, c'est comme ça ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#26

Message par Tlem »

mikell a écrit :sur mon XP essayer de lire un lecteur CD vide provoque un message d'erreur Windows, c'est comme ça ^^
Ben je suis aussi sous XP SP3 et mon code ne provoque pas d'erreur. Est-ce que tu as essayé le code que j'ai proposé sur ton PC ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#27

Message par mikell »

Oui
Windows - Lecteur non prêt
Exception Processing Message c00000a3 Parameters 75afbf7c 4 75afbf7c 75afbf7c


Edit
Ton code n'est pas spécialement plus rapide que le mien, pour une recherche à 3 paramètres
Le mien est peut-être un poil plus lent (en ms) mais j'incriminerais plutôt l'actualisation des SplashText
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#28

Message par Tlem »

Ben, je viens de tester sur le PC de ma femme qui est en XP ainsi que sur 2 machines virtuelles en XP aussi et je n'ai pas d'erreur !!!
Bref, la question n'est quand même pas là. Quoi qu'il en soit, il est plus raisonnable dans certains cas d'effectuer des opérations sur ce qui existe et donc la vérification de l'accès à un lecteur de disque, CD ou autre est plus raisonnable. ;)

Edit :
Comme le mal est fait :roll: , voici le code modifié et amélioré en prévoyant la future question ...
Les commentaires devraient suffire pour la compréhension du code.
► Afficher le textea lire que si vous n'y arrivez pas
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
labougie
Niveau 4
Niveau 4
Messages : 68
Enregistré le : dim. 03 nov. 2013 14:36
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#29

Message par labougie »

Bonjour Tous,

Je vais commencer par le début.
Ne modifier pas vos posts, je suis partisan de vouloir trouver seul, et si besoin je dévoilerai au fur et à mesure :wink: .

@TopXm,

La nuit quoi que courte, m'a apporté le fait d'inclure

FileWriteLine($LogFile, "=~=~=~=~=~=~=~=~=~=~=~=~ Recherche pour les Fichiers Lecteur " & $aArray[$k] & """ " & $answer[$i] & " """ & " =~=~=~=~=~=~=~=~=~=~=~=~")

dans la boucle, avoir la soluce toute faite c'est excellent +1.

Maintenant il faut que je comprenne comment tu l'as inséré, et la raison de la modification.

Labougie

PS, pour les autres réponses, je reviendrais, soyez en rassurés
Avatar du membre
labougie
Niveau 4
Niveau 4
Messages : 68
Enregistré le : dim. 03 nov. 2013 14:36
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#30

Message par labougie »

Pour info:

Recherche sur tous les dd

avec mon batch

Batch lancé par Labougie depuis ["C:\Users\Labougie\Desktop\"] le [18/11/2013 15:27]
...
Exécution terminée le [18/11/2013 15:30]

Soit +/-3 min n'ayant pas le décompte des scdes

Avec le script autoit, (belle présentation grâce au concours de TopXm)

Outil lancé par: Labougie Depuis: [C:\Users\Labougie\Desktop\Script AutoIt] le: 18-11-2013 à: 15:41:37
Terminé le: 18-11-2013 à: 15:42:13

Soit 36 sdes

Je fais devoir en apprendre beaucoup plus avec ce langage,.

---

Mikell,
J'suis pour la paix des "méninges" :mrgreen:

labougie
Avatar du membre
labougie
Niveau 4
Niveau 4
Messages : 68
Enregistré le : dim. 03 nov. 2013 14:36
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#31

Message par labougie »

Me revoici avec un souci pour lister les dossiers

cet ordre

$Recherche = _FileListToArrayEx($aArray[$k] & "\", "*" & $answer[$i] & "*.*", 1, 2)

le 0 retourne les fichiers uniquement
le 1 retourne les fichiers uniquement
le 2 ne retourne absolument rien, ni fichier ni dossier

je parle de la position du chiffre pour
$iFlag : 0 = Retourne fichier et répertoire (défaut), 1 = Retourne que les fichiers, 2 = Retourne que les répertoires.


Décomposition de la ligne

$sPath : Chemin de recherche ==> $aArray[$k] & "\"

$sFilter : Filtres de recherches (Groupe de filtres multiple tel que "*.png|*.jpg|*.bmp") ==> "*" & $answer[$i] & "*.*"

$iFlag : 0 = Retourne fichier et répertoire (défaut), 1 = Retourne que les fichiers, 2 = Retourne que les répertoires. ==> 1

$sSDir : Recherche récursive et chemin complet : 0 = Recherche dans le dossier courant (défaut), 1 = Recherche récursive, 2 = Recherche récursive + retour du chemin complet. ==> 2

Pourquoi cela ne fonctionne pas sur ma station, est-ce à cause de Win8 :mrgreen:

labougie
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#32

Message par timmalos »

Je n'ai pas testé mais si vous mettez un filtre qui oblige le nom à avoir un .extension c'est normal que vous n'ayez pas de dossiers remontés.

Même si vous terminez par ".*" donc n'importe quelle extension vous obligez les fichiers à avoir un extension. Donc le fichier sans extension "log" ne sera pas remonté de même que le dossier "dossier"
Supprimez simplement ces deux caractères et ca devrait être ok :)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#33

Message par jchd »

timmalos a écrit :Je n'ai pas testé mais si vous mettez un filtre qui oblige le nom à avoir un .extension c'est normal que vous n'ayez pas de dossiers remontés.
Ah bon ? Et pourquoi ça ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#34

Message par mikell »

Ben tout simplement parce moi le test je l'ai fait et qu'effectivement ça marche pô

Pour un dossier créé sur le bureau "_test1" :

Code : Tout sélectionner

#Include <Array.au3>
#Include <_FileListToArrayEx_v3.au3>

$array = _FileListToArrayEx(@desktopdir & "\", "*test*", 2)     ; <= marche

$array = _FileListToArrayEx(@desktopdir & "\", "*test*.*", 2)    ; <= marche pô

_ArrayDisplay($array)
Probablement parce que (AMHA de (?<!jeune) padawan) dans la fonction _FileListToArrayEx, ce traitement

Code : Tout sélectionner

; $sSDirFTMP = $sFilter
$sSDirFTMP = "*test*.*"
$res = StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace("|" & $sSDirFTMP & "|", '\|\h*\|[\|\h]*', "\|"), '[\^\$\(\)\+\[\]\{\}\,\.\=]', "\\$0"), "\|([^\*])", "\|^$1"), "([^\*])\|", "$1\$\|"), '\*', ".*"), '^\||\|$', "")
msgbox(0,"", $res)   ; résultat = .*test.*[color=#FF0000]\.[/color].*
Laisse le point qui est dans le filtre et l'intègre au pattern à rechercher
En effet si mon dossier s'appelle "_test.1" dans ce cas ça marche Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#35

Message par jchd »

Ah, donc d'après toi c'est dû à un bug dans la fonction utilisée. Je voulais seulement dire que l'extension d'un dossier est parfaitement valide.
Modifié en dernier par jchd le mer. 20 nov. 2013 08:50, modifié 1 fois.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#36

Message par Tlem »

Personnellement, j'aurais trouvé ce type de comportement absolument normal, car lorsque je recherche quelque chose de la forme *XXX*.*, je recherche bien quelque chose qui commence (ou pas) par un ou plusieurs caractères, puis de la chaine XXX, ensuite de un ou plusieurs caractères (ou pas), puis d'un point et enfin d'un ou plusieurs caractères (ou pas) ...
Le point étant spécifié, il sous entend que l'on recherche en principe quelque chose qui a une extension !

Maintenant, après avoir effectué des tests sur XP, il se trouve qu'un batch DOS et Windows renvoient bien un dossier qui serait de la forme XXX.
Donc de l'avis de Microsoft, la fonction serait effectivement boguée, maintenant, Microsoft ne fait pas toujours tout bien ... :roll:

Après, ce n'est pas moi qui est écrit la fonction, donc il peut être judicieux de soumettre "ce problème" sur le sujet concerné : http://www.autoitscript.com/forum/topic ... ttoarrayex
Maintenant, pour info, RecFileListToArray() a le même comportement, alors que _FileListToArray renvoi bien un dossier XXX.

Par acquis de conscience, j'ai aussi effectué un test sous Linux et il s'avère que là aussi nous avons un comportement normal pour moi. Si je reprend les tests comme ci-dessus avec un dossier Test et un dossier Test.1, la recherche *Test*.* ne renverra pas le dossier Test. 8)

Après, je n'ai pas de Mac, donc pas de test possible, mais comme Mac OS se base sur Unix tout comme Linux, je suppose que le résultat sera le même.

Après; tout est une question de point de vue. Soit on donne crédit à Microsoft et dans ce cas il faut modifier la fonction, soit on donne crédit à Unix/Linux et dans ce cas la fonction est bonne (par contre dans ce cas, _FileListToArray est donc boguée ... :lol:

Je sent un grand débat venir. hihihi
Allez JC, éclaire nous de ta sagesse et de tes connaissances. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#37

Message par mikell »

jchd a écrit :Ah, donc d'après toi c'est dû à un bug dans la fonction utilisée.
Je n'ai pas parlé de bug (avec un filtre correct la fonction marche), j'ai simplement dit que la fonction ne marchait pas avec cette manière d'écrire le filtre et je pense que mon analyse de la cause est correcte
Maintenant je t'engage à faire les mêmes tests et vérifications comme ça ce sera "d'après toi" aussi :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#38

Message par jchd »

Mais non, je suis juste passé par ici comme ça, en diagonale du fou, sans intention polémique. J'ai dû mal m'exprimer : j'avais simplement cru comprendre que Timmalos voulais dire qu'un nom de dossier ne peut avoir d'extension.

Maintenant que telle ou telle fonction de listage (auquelles je n'ai pas l'intention de m'intéresser pour l'instant) considère abc* distinct de abc*.* me laisse complètement indifférent, pour tout dire. Il suffit que sa doc soit assez explicite.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#39

Message par Tlem »

Donc, tu laisse le soin à un autre de lancer la polémique sur le forum US. :mrgreen:

Ta position au sein de l'équipe AutoIt aura pu être un atout pour discuter avec les autres DEV du choix à faire. Maintenant, cela ne me dérange pas de créer un sujet sur le forum US, mais j'ai bien peur que cela fasse un débat stérile.

Comme tu le dit, le fait que telle ou telle fonction renvoie ou pas tel ou tel résultat est peux important, du moment que cela soit spécifié. Par contre ce qui peut déranger, c'est que deux fonctions "identiques" ne renvoient pas le même résultat pour la même recherche (Dans la bêta _FileListToArray et RecFileListToArray).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Convertir mon batch en autoit

#40

Message par jchd »

Ce n'est pas de la lâcheté ; il se trouve que j'ai un nombre certain d'occupations un poil plus urgentes qui crient famine.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Verrouillé