Page 1 sur 1
[R] utiliser "If FileExists" avec des jockers comme dossier
Posté : ven. 20 nov. 2015 23:29
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

Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 01:01
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()
Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 01:27
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
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
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
Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 10:50
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
Pouvez vous m'orienter car je sens que je part encore dans une mauvaise direction
Merci d'avance
Jean-michel
Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 13:07
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.
++
Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 14:19
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
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
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, $FLTAR_NOSORT, $FLTAR_FULLPATH)
If @error Then
MsgBox(4096,"test", "fichier datedujour.vbs absent")
Else
For $i = 1 to $aArray[0]
Ga($aArray[$i])
Next
EndIf
Func Ga($file)
Msgbox(0,"", $file) ; ou ShellExecute, ou whatever :)
EndFunc
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()

Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 15:11
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
Mais l'antivirus du taf m'a shooté tous les batchs compilés en exe (je pense qu'il ne kiffe pas UPX)
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
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...

Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 15:36
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

Mais l'antivirus du taf m'a shooté tous les batchs compilés en exe (je pense qu'il ne kiffe pas UPX)

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...
Moi qui pensait que j'avais croisé ce pseudo sur CCM.
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é
++
Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : sam. 21 nov. 2015 16:17
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...
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

Re: [..] utiliser "If FileExists" avec des jockers comme dos
Posté : mar. 24 nov. 2015 19:55
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
Re: [R] utiliser "If FileExists" avec des jockers comme doss
Posté : mer. 25 nov. 2015 13:56
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.
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.
@++