OVH Cloud OVH Cloud

Supprimer un repertoir en vbs

7 réponses
Avatar
guillaume
Bonjour, J'aurais voulu savoir comment on peu supprimer un
repertoir(non vide) via un script vbs.
Le repertoir se trouve sur le reseau, j'ai essayer avec un
whscript qui monte un lecteur reseau du chemin contenant le
repertoir =E0 supprimer puis une command rp sur le repertoir.
Le script me renvoi une erreur disant que le chemin n'est
pas correct alors qu'il l'ai. Si qqun connait un autre
moyen (via un objet par exemple)
Merci d'avance

Guillaume

7 réponses

Avatar
Jacques Barathon [MS]
Une technique un peu rurale, voire agricole, consiste à exécuter la commande
"rd" via la méthode exec de l'objet Shell. La méthode exec ne peut pas
lancer directement "rd", je suppose que c'est parce que "rd" n'est pas un
exécutable distinct mais une commande intégrée, toujours est-il qu'il faut
d'abord lancer cmd.exe et lui passer la commande en paramètre ("cmd /c
..."):

--- couper ici ---
strRep = "c:CriticalData"

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("cmd /c rd /s /q " & strRep)
--- couper ici ---

Jacques

"guillaume" wrote in message
news:243c801c45f76$dda03420$
Bonjour, J'aurais voulu savoir comment on peu supprimer un
repertoir(non vide) via un script vbs.
Le repertoir se trouve sur le reseau, j'ai essayer avec un
whscript qui monte un lecteur reseau du chemin contenant le
repertoir à supprimer puis une command rp sur le repertoir.
Le script me renvoi une erreur disant que le chemin n'est
pas correct alors qu'il l'ai. Si qqun connait un autre
moyen (via un objet par exemple)
Merci d'avance

Guillaume
Avatar
Merci beaucoup cela à fonctionner.
-----Message d'origine-----
Une technique un peu rurale, voire agricole, consiste à
exécuter la commande

"rd" via la méthode exec de l'objet Shell. La méthode exec
ne peut pas

lancer directement "rd", je suppose que c'est parce que
"rd" n'est pas un

exécutable distinct mais une commande intégrée, toujours
est-il qu'il faut

d'abord lancer cmd.exe et lui passer la commande en
paramètre ("cmd /c

...."):

--- couper ici ---
strRep = "c:CriticalData"

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("cmd /c rd /s /q " & strRep)
--- couper ici ---

Jacques

"guillaume" wrote in message
news:243c801c45f76$dda03420$
Bonjour, J'aurais voulu savoir comment on peu supprimer un
repertoir(non vide) via un script vbs.
Le repertoir se trouve sur le reseau, j'ai essayer avec un
whscript qui monte un lecteur reseau du chemin contenant le
repertoir à supprimer puis une command rp sur le repertoir.
Le script me renvoi une erreur disant que le chemin n'est
pas correct alors qu'il l'ai. Si qqun connait un autre
moyen (via un objet par exemple)
Merci d'avance

Guillaume


.



Avatar
scraper
Salut à Jacques Barathon [MS] qui dans son post

nous a écrit/répondu :

Une technique un peu rurale, voire agricole, consiste à exécuter la
commande "rd" via la méthode exec de l'objet Shell. La méthode exec
ne peut pas lancer directement "rd", je suppose que c'est parce que
"rd" n'est pas un exécutable distinct mais une commande intégrée,
toujours est-il qu'il faut d'abord lancer cmd.exe et lui passer la
commande en paramètre ("cmd /c ..."):


euh ... et pourquoi pas avec le fso ?? :-)

copy

La méthode DeleteFolder ne fait pas la distinction entre dossiers ayant un
contenu et dossiers vides. Le dossier spécifié sera supprimé sans tenir
compte de son contenu éventuel.

copy


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

Avatar
Jacques Barathon [MS]
Effectivement, c'est plus simple. N'ayant jamais supprimé de dossier avec le
FSO, j'avais d'abord pensé à la méthode Delete qui a l'avantage de pouvoir
faire la suppression sur une machine distante si besoin est mais qui a
l'inconvénient de passer par un select, pas forcément optimal. En
comparaison, la méthode DeleteFolder est une solution propre et sans bavure:

--- couper ici ---
Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.DeleteFolder("C:CriticalData")
--- couper ici ---

Merci Scraper!

Jacques

"scraper" wrote in message
news:
euh ... et pourquoi pas avec le fso ?? :-)

copy

La méthode DeleteFolder ne fait pas la distinction entre dossiers ayant un
contenu et dossiers vides. Le dossier spécifié sera supprimé sans tenir
compte de son contenu éventuel.

copy


Avatar
Guillaume
Effectivement, c'est plus simple. Mais le repertoir à
supprimé était sur une machine distante donc la première
solution est plus adequate.
Merci quand même
Guillaume

-----Message d'origine-----
Effectivement, c'est plus simple. N'ayant jamais supprimé
de dossier avec le

FSO, j'avais d'abord pensé à la méthode Delete qui a
l'avantage de pouvoir

faire la suppression sur une machine distante si besoin
est mais qui a

l'inconvénient de passer par un select, pas forcément
optimal. En

comparaison, la méthode DeleteFolder est une solution
propre et sans bavure:


--- couper ici ---
Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.DeleteFolder("C:CriticalData")
--- couper ici ---

Merci Scraper!

Jacques

"scraper" wrote in message
news:
euh ... et pourquoi pas avec le fso ?? :-)

copy

La méthode DeleteFolder ne fait pas la distinction entre
dossiers ayant un


contenu et dossiers vides. Le dossier spécifié sera
supprimé sans tenir


compte de son contenu éventuel.

copy



.




Avatar
Jean-Claude BELLAMY
Dans le message news:26a2e01c46360$b8adbaa0$ ,
Guillaume s'est ainsi exprimé:

Effectivement, c'est plus simple. Mais le repertoir à
supprimé était sur une machine distante donc la première
solution est plus adequate.
???????????


"Deletefolder" (et toutes les méthodes de FileSystemObject) fonctionne très
bien avec de dossiers DISTANTS !!
La syntaxe UNC, elle est fait pour être utilisée !
FSO, il se contrefiche de savoir si le fichier ou dossier est local ou
distant!

P.ex. :
--- couper ici ---
Set oFSO = CreateObject("Scripting.FileSystemObject")
ofso.CreateFolder("springfieldC$CriticalData")
msgbox "Dossier créé"
oFSO.DeleteFolder("springfieldC$CriticalData")
msgbox "Dossier supprimé"
--- couper ici ---
(j'ai utilisé ici les partages administratifs, dont je suis sûr de
l'existence, ne les supprimant jamais)


Ah il y en a certains qui aiment se compliquer l'existence ! ;-)))


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *


Avatar
Jacques Barathon [MS]
"Jean-Claude BELLAMY" wrote in message
news:ekO%
"Deletefolder" (et toutes les méthodes de FileSystemObject) fonctionne
très
bien avec de dossiers DISTANTS !!
La syntaxe UNC, elle est fait pour être utilisée !
FSO, il se contrefiche de savoir si le fichier ou dossier est local ou
distant!

P.ex. :
--- couper ici ---
Set oFSO = CreateObject("Scripting.FileSystemObject")
ofso.CreateFolder("springfieldC$CriticalData")
msgbox "Dossier créé"
oFSO.DeleteFolder("springfieldC$CriticalData")
msgbox "Dossier supprimé"
--- couper ici ---
(j'ai utilisé ici les partages administratifs, dont je suis sûr de
l'existence, ne les supprimant jamais)


Tu as raison, je n'avais pensé à utiliser des UNC. Bien vu. Néanmoins, comme
tu le dis toi-même, cela suppose la présence de partages administratifs ou
d'un autre partage permettant l'accès au répertoire en question.

Merci en tout cas pour la précision,
Jacques