Tester si des dossiers et fichiers exist renvoie si un ou des dossiers fichiers
mahelan
Messages postés51Date d'inscriptionmercredi 21 février 2007StatutMembreDernière intervention 4 avril 2007
-
21 mars 2007 à 21:18
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDerniè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
A voir également:
Tester si des dossiers et fichiers exist renvoie si un ou des dossiers fichiers
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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..
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 ??????
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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)
mahelan
Messages postés51Date d'inscriptionmercredi 21 février 2007StatutMembreDerniè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?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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>
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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.
mahelan
Messages postés51Date d'inscriptionmercredi 21 février 2007StatutMembreDerniè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
mahelan
Messages postés51Date d'inscriptionmercredi 21 février 2007StatutMembreDerniè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