Vérifier l'existence d'un dossier

Résolu
Signaler
Messages postés
16
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
8 décembre 2006
-
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
-
Bonjour, j'ai besoin de faire un script qui:
 -Vérifie l'existance d'un répertoire.
 -Si il existe, comparer la date d'un fichier et écraser si la date est inférieure.

J'ai réussi la deuxième partie. Le seul problème c'est que si le répertoire n'existe pas j'ai un message d'erreur. Si il n'existe pas j'aimerais ne pas vérifier la date du fichier.

Code:
Const OverwriteExisting = TRUE



Set objFSO = CreateObject("Scripting.FileSystemObject")



Set objLocalFile = objFSO.GetFile("C:\test\test.txt")
dtmLocalDate = objLocalFile.DateLastModified



Set objServerFile = objFSO.GetFile(
[file://\\serveur\source
\\serveur\source
]
)
dtmServerDate = objServerFile.DateLastModified



If dtmLocalDate < dtmServerDate Then
    objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
End If


Merci

14 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Regarde ce que tu as mis: DossierServeur = "[file://source/test/test.txt \\]source\test\test.txt"
Et regarde ce que je te proposais: DossierServeur = "\\Serveur\Source"

L'idee c'est que DossierServeur contienne le nom d'un répertoire. toi tu lui mets le nom d'un FICHIER 

@+,   Ju£i?n
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
If Dir(TonRepertoire,vbDirectory)<>"" Then
    'Toncode
Else
    MsgBox "Le répertoire n'existe pas"
End If

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
il existe la méthode FolderExists de ton objet FSO....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
Pas de Dir en vbs, Casy...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
RRRRRRRRRRR

xcuzmi, moâ pas connaitre vbs et pas fait attention que vbs non plus, surtout

Dsl

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
16
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
8 décembre 2006

En fait, si le répertoire n'existe pas, je ne veux pas de message. Si le répertoire n'est pas là "exit". Je suis un gars de réseau donc le vbscript est pour moi du chinois :) Est-ce que vous pouvez corriger mon code SVP?



Const OverwriteExisting = TRUE



Set objFSO = CreateObject("Scripting.FileSystemObject")



Set objLocalFile = objFSO.GetFile("C:\test\test.txt")
dtmLocalDate = objLocalFile.DateLastModified



Set objServerFile = objFSO.GetFile(
[file://\\serveur\source\test.txt
\\serveur\source\test.txt


]
)
dtmServerDate = objServerFile.DateLastModified



If dtmLocalDate < dtmServerDate Then
    objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
End If
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Const OverwriteExisting = TRUE



Set objFSO = CreateObject("Scripting.FileSystemObject")




If objFSO.FolderExists("C:\test\test.txt")=True Then
Set objLocalFile = objFSO.GetFile("C:\test\test.txt")
dtmLocalDate = objLocalFile.DateLastModified



Set objServerFile = objFSO.GetFile(
[file://serveur/source/test.txt
\\serveur\source\test.txt


]
)
dtmServerDate = objServerFile.DateLastModified



If dtmLocalDate < dtmServerDate Then
    objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
End If


End If

 Drikce 06
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Bonjour au fait!

 Drikce 06
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
>859126 Patrin: Pourquoi ne pas essayer ce que te propose  =2359 Renfield

Utilise la fonction .FolderExists  ne ton FileSystemObject
LE seul truc c'est qu il faut que le nom du fichier et le nom du répertoire soient dans des variables séparer

Soit: (pas teste)
Dim DossierServeur 
Dim Fichier 
Dim DossierLocal 

Const OverwriteExisting =  True 

Set objFSO =  CreateObject ("Scripting.FileSystemObject") 
Fichier  = "Test.txt" 
DossierLocal = "C:\test" 
DossierServeur = "\\Serveur\Source" 
If objFSO.FolderExists(DossierServeur) And objFSO.FolderExists(DossierLocal) Then 
    Set objLocalFile = objFSO.GetFile(DossierLocal & Fichier) 
    dtmLocalDate = objLocalFile.DateLastModified 

    Set objServerFile = objFSO.GetFile(DossierServeur & Fichier) 
    dtmServerDate = objServerFile.DateLastModified 

    If dtmLocalDate < dtmServerDate Then 
        objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting 
    End If 
End If 

@+,   Ju£i?n
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
If objFSO.FolderExists("C:\test\test.txt")=True Then

pas possible, test.txt ressemble a un fichier, et non a un dossier.
FolderExists ne fonctionnera surement pas, en ce cas... utilises alors la méthode FileExists

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Ah oui! dsl! j'ai pas fait gaf, mais c'est sur que si tu donnes le chemin du fichier en dur autant utiliser FileExists comme le dit Renfiel!

 Drikce 06
Messages postés
16
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
8 décembre 2006

Déjà, ça me semble un code plus logique que ce que j'avais fait :) Mais le problème c'est qu'il ne remplace pas le fichier... Mais il ne me retourne pas d'erreur. Merci pour l'aide!!! :) 



Dim DossierServeur
Dim Fichier
Dim DossierLocal



Const OverwriteExisting = True



Set objFSO = CreateObject("Scripting.FileSystemObject")
Fichier = "test.txt"
DossierLocal = "c:\test"
DossierServeur = "

[file://\\source\test\test.txt \\]

source\test\test.txt"
If objFSO.FolderExists(DossierServeur) And objFSO.FolderExists(DossierLocal) Then
    Set objLocalFile = objFSO.GetFile(DossierLocal & Fichier)
    dtmLocalDate = objLocalFile.DateLastModified



    Set objServerFile = objFSO.GetFile(DossierServeur & Fichier)
    dtmServerDate = objServerFile.DateLastModified



    If dtmLocalDate < dtmServerDate Then
        objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
    End If
End If
Messages postés
16
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
8 décembre 2006

J'ai fait une erreur de débutant... Merci pour l'aide!!ça m'a donné le goût d'en connaître plus sur VBS.
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
2
Un up 2 ans après qui marche en VBS et VB6:

Dim stPath ' Nom du chemin d'acces au dossier
Dim stFolder 'Nom du dossier
Dim oFSO,oFl
Dim Ans1, Ans2

stPath = "C:"
stFolder = "mon_dossier"



Set oFSO = CreateObject("Scripting.FileSystemObject")
' si le dossier n'existe pas, on le crée
If Not oFSO.FolderExists(stPath & stFName) Then
  'Crée le repertoire
  Set oFld=oFSO.CreateFolder (stPath & stFName)
'Else ' sinon on fait autre chose
'  MsgBox "Le répertoire " & stPath & stFName & " existe."
End If