Tester si des dossiers et fichiers exist renvoie si un ou des dossiers fichiers

mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007 - 21 mars 2007 à 21:18
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 29 mars 2007 à 16:45
Bonsoir,

Je voudrais savoir comment je peut tester la presence de plusieurs dossiers et fichiers et je veut que si un et present cela me le renvoie vers un fichier.txt

es possible?
ce sont des dossier et fichiers qui seront dans program files windows windows\system32 et application datta
mais sur C ou D là ou et le system
c'est possible?

Merci

25 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 mars 2007 à 21:37
Bonsoir ;

Bien sur que c'est possible !

Etape 1 : recherche sur ce forum (les exemples n'y manquent pas) pour voir comment on teste si :
- un répertoire existe
- un fichier existe dans un répertoire...

Etape 2 (et là nous t'aiderons, une fois passée l'étape 1) : déterminer le répertoire système..

A toi ...
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
21 mars 2007 à 21:43
salut,

un fichier avec
FileExists
un dossier avec
FolderExists

le soucis c'est que je ne peut pas savoir à l'avance sur quelle disque et le system...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 mars 2007 à 21:58
Bon...
regarde alors ce que fait ceci...

et sers-t-en...

Private Type SHITEMID
    cb As Long
    abID As Byte
End Type


Private Type ITEMIDLIST
    mkid As SHITEMID
End Type


Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long


Private Function GetSpecialfolder(CSIDL As Long) As String
    Dim r As Long
    Dim IDL As ITEMIDLIST
    coucou = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If coucou = NOERROR Then
        Path$ = Space$(512)
        coucou = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
        GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
        Exit Function
    End If
    GetSpecialfolder = ""
End Function


Private Sub Command1_Click()


End Sub


Private Sub Command2_Click()
Dim wsh As Variant, IETemp As String
 
Set wsh = CreateObject("WScript.Shell")
IETemp = wsh.ExpandEnvironmentStrings("%USERPROFILE%") & "\Local Settings\Temporary Internet Files"
MsgBox IETemp
End Sub


Private Sub Form_Activate()
  Me.Move 0, 0, Screen.Width, Screen.Height
   Me.AutoRedraw = True
    Dim i As Long
    For i = 0 To 100
      toto = GetSpecialfolder(i)
      If toto <> "" Then Me.Print i & "  ===>>> " & toto
    Next
End Sub


 
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
21 mars 2007 à 22:06
re,

merci mais là rien compris
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 mars 2007 à 22:11
Lance donc... et regarde, ma foi...
C'est évident...
L'un des répertoires imprimés sur ta form est le répertoire système, là où il se trouve....
Est-il alors si difficile de voir à quel indice de la boucle il correspond et d'invoquer alors, dans ton appli, ce seul indice (plus besoin de boucle) pour découvrir quel est le chemin de ton répertoire système ??????
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 mars 2007 à 22:12
En plus, j'ai fait figurer tous ces indices dans la colonne de gauche ....
Tiens, au hasard : le n° 37   !!!!
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
21 mars 2007 à 22:17
je suis desolé mais je ne comprend pas
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 mars 2007 à 22:20
Non ?


Que veux-tu alors ?


Que j'écrive pour toi exactement ce dont tu as besoin... et dont tu me dis que tu ne le comprends pas ?
C'est vraiment contraire ) mes principes premiers... mais si c'est vraiment celà qu'il te faut (copier et coller sans piger), je te fais...
Tu dis...


 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 mars 2007 à 22:27
Bon...
Je dois aller dormir...
Allez !

Private Type SHITEMID
    cb As Long
    abID As Byte
End Type


Private Type ITEMIDLIST
    mkid As SHITEMID
End Type


Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long


Private Function GetSpecialfolder(CSIDL As Long) As String
    Dim r As Long
    Dim IDL As ITEMIDLIST
    coucou = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If coucou = NOERROR Then
        Path$ = Space$(512)
        coucou = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
        GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
        Exit Function
    End If
    GetSpecialfolder = ""
End Function


Private Sub Command1_Click()
  MsgBox "alors c'est quoi, ce répertoire : " & GetSpecialfolder(37) & " ? hein ?"
End Sub


Et ne viens pas me dire que tu ne vois toujours pas, hein ...
Sur une form : un bouton de commande command1 et le code ci-dessus...
Tu lances, tu cliques sur commande1

Plus que celà, quand même... je refuse... (tu as là tout)
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
21 mars 2007 à 22:32
non je veut comprendre,mais reconnait que ce que tu m'as donné et complexe quand méme je pense
donc je t'explique un peu plus ce que je cherche rechercher sur divers PC
exemple


Program Files\F?nts

Program Files\Fichiers communs\Yazzle1122OinUninstaller.exe

Program Files\Common files\F?nts

Program Files\Common files\?racle

je sait des ? dans un dossier c'est imposible à faire mais c'est dossier existe lors de certaine infection
PurityScan entre autre

je veut le faire en vbs car comme avec un batch les ? peuvent donner de faut positif les ? remplace n'importe quelle lettre ou chiffre

en faite ce script vbs que je veut faire c'est testé si ces dossers fichiers exist,si il existes renvoyé rapport.txt
et poursuivre mon batch
tu comprend?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 mars 2007 à 23:00
Faut-il préciser que tu dois ouvrir Visual Basic 6.0, créer un projet .EXE, copier le code de notre ami jmfmarques (au passage, ton code fonctionne parfaitement  ), mettre un bouton sur ta Form (nommée Command2) et appuyer sur F5 ?

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
22 mars 2007 à 13:55
Salut,

Mais je ne veut pas crer de exe
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 mars 2007 à 15:59
Salut,


Tu peux passer les variable d'environement à ton fichier de script en vbs.


Je sais pas comment on récupère les paramètre dans le vbscript.


Pour avoir la liste des variable d'environement sous DOS, tape set.


Pour les utiliser, met des % autour, mais je pense que tu connais. set /? pour plus d'info sur le sujet.


Attention, il faudrat peut être mettre des guillemets autours des chemins s'ils ont des espaces.
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
22 mars 2007 à 22:44
Salut,

Oui pour les variables en dos,mais je veut faire ça en vbs car je vois pas comment faire avec ces ?
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 mars 2007 à 11:29
Si tu passe les chemins d'accès aux répertoires qui t'intéressent
(%SYSTEMROOT%, %PROGRAMFILES%...) en argument du vbs, tu les auras dans
ton vbs.

Tu peux récupérer les arguments via la propriété Arguments de l'hôte de script.


Je sais pas si les codes de test d'existence de fichier gère les ?
comme tu le souhaite, mais tu en trouveras des tonnes sur le net.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 mars 2007 à 11:34
En fait, beaucoup plus simple, tu peux passer par
ExpandEnvironmentStrings dans ton VBS pour récupérer les variable
d'environnements comme jmfmarques te l'a dit plus haut.
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
23 mars 2007 à 14:24
Salut,

Merci beaucoup
peut tu me montrer un exemple de script vbs de ce que ça donneré?

Merci
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 mars 2007 à 15:55
Mais bien sûr.


J'ai fait un fichier vbs nommé test.vbs (Mal nommé d'ailleurs).

J'ai mis ça dedans.

(Note le ? à la fin du deuxième nom de fichier)

Set WshShell = Wscript.CreateObject("Wscript.Shell")

Set fso = CreateObject("Scripting.FileSystemObject")


NomFichier = WshShell.ExpandEnvironmentStrings("%SYSTEMROOT%") & "\system32\kernel32.dll"


if fso.FileExists(NomFichier) then Wscript.echo NomFichier


NomFichier = WshShell.ExpandEnvironmentStrings("%SYSTEMROOT%") & "\system32\kernel32.dl?"


if fso.FileExists(NomFichier) then Wscript.echo NomFichier

Pour mettre les noms et chemins d'accès des fichiers trouvés dans un fichier, il suffit de faire en dos :

cscript.exe //Nologo test.vbs > Existes.txt
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
23 mars 2007 à 17:43
Merci c'est ce qui me faut,comment je pourrais faire pour qu'il m'envoie dans un fichier.txt si un fichier et present
et pas de fichier.txt si pas present,sans que la boite de dialogue s'ouvre

merci beaucoup
0
mahelan Messages postés 51 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 4 avril 2007
23 mars 2007 à 23:16
voilà mon script
On Error Resume Next
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
NomFichier = WshShell.ExpandEnvironmentStrings("%SYSTEMROOT%") & "\system32\?dobe"
if fso.FolderExists(NomFichier) then Wscript.echo NomFichier
NomFichier = WshShell.ExpandEnvironmentStrings("%SYSTEMROOT%") & "\system32\??mantec"
if fso.FolderExists(NomFichier) then Wscript.echo NomFichier

en revanche pour faire appelle à mon script depuis mon batch j'ai mis:

cscript.exe //Nologo Purity.vbs > Puritytest.txt

et ça ne marche que au deuxiéme coup,je vois vraiment pas pourquoi

une reponse?

Merci d'avance
0
Rejoignez-nous