[R] utiliser "If FileExists" avec des jockers comme dossier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

[R] utiliser "If FileExists" avec des jockers comme dossier

#1

Message par jeanmimigab »

Bonjour à tous(tes)

Je test un script destiné à chercher des fichier datedujour.vbs (par exemple 20112015.vbs)
le voici

Code : Tout sélectionner

#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <date.au3>

$sDate = _NowDate ( )
$ecrij = StringReplace($sDate, "/", "")

Dir()
Func Dir()
   If FileExists($ecrij & ".vbs") Then
       _Ga()

Else
   MsgBox(4096,"test", "fichier datedujour.vbs absent")
EndIf
EndFunc   

;fonction qui exécute ga.exe
Func _Ga()
ShellExecute(@scriptdir & "\ga.exe")
EndFunc
il fonctionne très bien si le fichier recherché se trouve dans @scriptdir, mais je n'arrive pas à adapter le script de manière à chercher dans des dossiers et sous dossiers (dont les noms seront tous différent) se trouvant dans @scriptdir (par exemple trouver @scriptdir\dossier1\dossier2\datedujour.vbs)

Avec des noms de dossiers fixe, cela serait simple ! mais vu que les noms de dossier et sous dossiers seront aléatoire cela ce complique pour mon faible niveau :?
j'ai tenté l'utilisation du jocker * comme par exemple un truc du genre >> If FileExists(@scriptdir & "\*\" & "\*\" & $ecrij & ".vbs") mais je bug complètement

pour info j'y arrive avec le batch suivant où DIR me sert bien en incluant les dossiers et sous dossiers

Code : Tout sélectionner

@echo off
set "mydate=%date:~0,2%%date:~3,2%%date:~6,4%"
set "FILENAME=%mydate%.vbs"
FOR /F "delims=" %%f in ('dir /S /B %FILENAME%') do (call ga.exe & exit)
noalerte.exe
NoAlerte.vbs
exit
Si cela vous inspire, merci d'avance :wink:
Modifié en dernier par jeanmimigab le dim. 22 nov. 2015 23:07, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#2

Message par mikell »

Pas testé mais ça pourrait le faire

Code : Tout sélectionner

#include <File.au3>

$sDate = _NowDate()
$ecrij = StringReplace($sDate, "/", "")
Local $aArray = _FileListToArrayRec(@scriptdir, $ecrij & ".vbs", $FLTAR_FILES, $FLTAR_RECUR)
If not @error Then Ga()
" 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
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#3

Message par jeanmimigab »

Bonsoir mikell

En fait je suis partis sur une mauvaise piste avec if fileExists si je comprend bien...

en tout cas une fois adapté, ton exemple fonctionne nickel :D

Je vais étudier ton script pour essayer de capter comment il fonctionne car je vais avoir besoin d'un deuxième script un peu plus complexe et je risque de me servir de cet exemple en l'adaptant
Si je galère pour le deuxième script, je posterais un nouveau topic demain

Un GRAND merci pour ton aide qui est toujours aussi appréciable :wink:

Je file au dodo,je suis hs ce soir...

Bonne nuit,

Code : Tout sélectionner

#include <File.au3>
#include <date.au3>
$sDate = _NowDate()
$ecrij = StringReplace($sDate, "/", "")
Local $aArray = _FileListToArrayRec(@scriptdir, $ecrij & ".vbs", $FLTAR_FILES, $FLTAR_RECUR)
If not @error Then Ga()
if @error then MsgBox(4096,"test", "fichier datedujour.vbs absent")

Func Ga()
ShellExecute(@scriptdir & "\ga.exe")
EndFunc
Avatar du membre
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#4

Message par jeanmimigab »

Bonjour tlm, Mikell,

Maintenant que j'ai pigé le principe de récupération des fichier dans un array, je désire changer l'action effectuée par la fonction "Ga"

Je désire que cette fonction ouvre tous les fichiers datedujour.vbs trouvés.

La recherche fonctionne bien sur tous les fichiers présent car j'arrive à les afficher avec "_ArrayDisplay"

J'ai essayer de faire une boucle avec FOR afin de récupérer les paths des fichiers trouvés pour les inclure dans une boucle et pleins d'autres choses afin que les fichiers vbs s'ouvrent, mais cela donne du grand n'importe quoi :mrgreen:

Pouvez vous m'orienter car je sens que je part encore dans une mauvaise direction :?

Merci d'avance

Jean-michel
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#5

Message par franco »

Salut


L'aide de la commande va surement t'aider.
https://www.autoitscript.com/autoit3/do ... rayRec.htm
Success: a one-dimensional array made up as follows:
[0] = Number of Files/Folders returned
[1] = 1st File/Folder
[2] = 2nd File/Folder
...
[n] = nth File\Folder
Et donc

Code : Tout sélectionner

Local $aArray = _FileListToArrayRec(@scriptdir, $ecrij & ".vbs", $FLTAR_FILES, $FLTAR_RECUR)
For $i = 1 to $aArray[0]
msgbox(0,"",$aArray[$i])
next

L'aide est là pour cela, n'oublie pas. :mrgreen: :)


++
L'entraide, c'est mon dada ;)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#6

Message par mikell »

jeanmimigab a écrit :En fait je suis partis sur une mauvaise piste avec if fileExists si je comprend bien...
Ton problème est un excellent exemple d'application de pensée latérale :mrgreen:

Cela dit franco a raison mais son commentaire est incomplet
Il faut aussi utiliser le paramètre qui va bien pour récupérer le chemin complet du(des) fichier(s)
► Afficher le texte
J'aime bien la fonction Ga() ça me rappelle les Shadoks - pionniers de la métalogique scientifique - qui ont aussi créé les fonctions Bu(), Zo() et Meu() :idea:
" 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
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#7

Message par jeanmimigab »

Coucou franco et mikell
J'aime bien la fonction Ga()
à la base GA.exe c'était mon module de Gestion d'Alerte, il ne manquerait plus que les shadoks me pompent ma fonction à cause du copyrights !
Ton problème est un excellent exemple d'application de pensée latérale
Pour moi la pensée latérale c'est de faire en batch ce que je n'arrive pas à faire en au3 :lol:
Mais l'antivirus du taf m'a shooté tous les batchs compilés en exe (je pense qu'il ne kiffe pas UPX) :mrgreen:
puis de toute façon faut bien que je me colle à cet Autoit avec lequel j'ai tant de mal :!:

Je bricole avec tout ce que vous m'avez donné comme conseils et promis, je vous tient au courant du résultat :wink:

Merci beaucoup pour votre aide :!:
edit:
Msgbox(0,"", $file) ; ou ShellExecute, ou whatever :)
[mode nunuche]Je ne trouve pas l'aide de la fonction whatever :? [/mode nunuche]

OK, je sors...Image
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#8

Message par franco »

Salut :)
Cela dit franco a raison mais son commentaire est incomplet
Normal, j'ai posté cela à l'arrache, étant donné que je garde ma nièce ^^
Pour moi la pensée latérale c'est de faire en batch ce que je n'arrive pas à faire en au3 :lol:
Mais l'antivirus du taf m'a shooté tous les batchs compilés en exe (je pense qu'il ne kiffe pas UPX) :mrgreen:
Premièrement, ton pseudo me disait quelque chose.
Là tu parles du batch.

Tout ceci me rappelle - de mémoire - un script pour restaurer le fichier Hosts... :mrgreen:
Moi qui pensait que j'avais croisé ce pseudo sur CCM. :lol:


Pour l'UPX : ne faut jamais le mettre, les antivirus n'aiment pas trop les scripts compilés avec UPX.
ComodoIS m'avait tout dégommé :lol:


++
L'entraide, c'est mon dada ;)
Avatar du membre
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#9

Message par jeanmimigab »

re,

Effectivement, j'ai codé MyHosts en 2009 quand j'étais helper en cath désinfection sur sur le forum Micro hebdo (ex 01net)
Cela fait un bail que j'ai laissé tombé la désinfection sur MH et zebulon, car avec tous les topics que je prenait en charge et le temps passé à former de nouveaux helpers sur "Sécurité académie" (forum privé qui n'existe plus) je n'avais plus une minute à moi. :?

C'est pour cela que je compati à la douleur de tout ceux qui m'aident ici... :mrgreen: :mrgreen: :mrgreen:

Je fais toujours quelques désinfections sur >> PCI <<< histoire de ne pas "perdre la main".

Je repasse vous donner des nouvelles dès que j'ai transformé tout les batchs de mon programme en Autoit :wink:
Avatar du membre
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

Re: [..] utiliser "If FileExists" avec des jockers comme dos

#10

Message par jeanmimigab »

Bonsoir à tous(tes)

Comme promis des nouvelles de mon petit programme enfin achevé.
Je suis pressé d'entamer un nouveau projet en Autoit.
Je vous remercie tous(tes) pour l'aide précieuse que vous m'avez apportée. Je n'y serais jamais arrivé sans vos précieux conseils

@Bientôt
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [R] utiliser "If FileExists" avec des jockers comme doss

#11

Message par franco »

Salut.

Effectivement, j'ai codé MyHosts en 2009 quand j'étais helper en cath désinfection
Et moi je suis élève en formation désinfection. :lol:

Comme toi, j'ai commancé le batch... Puis l'AutoIt (grâce à un ami).
Et depuis ce temps, j'ai délaissai le batch.

Par contre, Powershell me tente de plus en plus.


Bref, content pour toi que ton projet aboutisse.

@++
L'entraide, c'est mon dada ;)
Répondre