Page 2 sur 5

Re: [..] Convertir mon batch en autoit

Posté : dim. 17 nov. 2013 23:33
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

Re: [..] Convertir mon batch en autoit

Posté : dim. 17 nov. 2013 23:40
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 ...

Re: [..] Convertir mon batch en autoit

Posté : dim. 17 nov. 2013 23:53
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

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 00:00
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. ;)

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 00:03
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 ^^

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 00:05
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 ?

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 00:21
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

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 01:57
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

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 15:30
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

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 15:50
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

Re: [..] Convertir mon batch en autoit

Posté : lun. 18 nov. 2013 23:29
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

Re: [..] Convertir mon batch en autoit

Posté : mar. 19 nov. 2013 08:30
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 :)

Re: [..] Convertir mon batch en autoit

Posté : mar. 19 nov. 2013 09:26
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 ?

Re: [..] Convertir mon batch en autoit

Posté : mar. 19 nov. 2013 14:30
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

Re: [..] Convertir mon batch en autoit

Posté : mar. 19 nov. 2013 16:02
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.

Re: [..] Convertir mon batch en autoit

Posté : mar. 19 nov. 2013 23:25
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. ;)

Re: [..] Convertir mon batch en autoit

Posté : mer. 20 nov. 2013 09:35
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:

Re: [..] Convertir mon batch en autoit

Posté : mer. 20 nov. 2013 10:16
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.

Re: [..] Convertir mon batch en autoit

Posté : mer. 20 nov. 2013 10:40
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).

Re: [..] Convertir mon batch en autoit

Posté : mer. 20 nov. 2013 10:55
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.