Suppression de dossier en VBS [Résolu] - VB/VBA/VBS - Programmation
MarshPosté le 03-02-2010 à 07:33:39
Sujet résolu
Code :
Dim cmd_delete
Dim o_shell
Set o_shell = WScript.CreateObject("WSCript.shell" )
cmd_delete = "cmd /K rd /S /Q Z:\profil"
o_shell.Run cmd_delete
'cmd /K' car rd n'est pas un exécutable reconnu de base... (st maclou) évidement !
Ne reste plus qu'à fermer la fenêtre shell résiduelle.
-----------------
[EDIT] J'ai peut-être posté un peu trop vite, je viens de voir un peu de lumière du côté de la ligne de commande du type
Code :
cmd_delete = "rd " & folder & " /Q /S"
o_shell.Run cmd_delete
Bonjour,
Je suis en train de m'arracher la tête mais heureusement pour moi elle tient bien !
Je m'explique :
J'essaye simplement de supprimer un dossier.
Quelque chose comme
Code :
o_fs.DeleteFolder("path" )
fonctionne très bien pour un dossier créé par moi même hors script, et ce, avec ou sans arborescence à l'intérieur.
Mais dès qu'il s'agit de supprimer des répertoires avec des demandes de confirmations du type "Attention c'est un fichier système êtes-vous sur ? Blabla", et bien, je n'ai pas d'erreur (c'est Lessieur) mais le dossier n'est pas pour autant supprimé.
Pas moyen de trouver un paramètre pour by pass la confirmation dans le script. D'ailleurs, que le problème vienne de là n'est qu'une hypothèse.
Pour préciser la chose, je passe par un mappage réseau car les dossiers que je souhaite supprimer sont sur différents serveurs d'un même domaine. Je suis certains que ces dossiers n'ont plus d'accès (ce sont des profils locaux résiduels) et si je le fais à la main en confirmant "Oui" "Oui pour tout", la suppression se passe sans problème de droits ou d'accès. Passer le script en local sur mon poste en filant les login/pass pour mapper ou bien directement depuis une session sur le domaine, le résultat est le même (Ca élimine l'hypothèse que ça pouvait venir du fait que la session est en Citrix, logique après tout c'est du simple accès de fichier via lecteur réseau)
J'ai tenté aussi la valeur True pour forcer la suppression des fichiers en lecture seule au cas où, mais soit ça me squiiz le script : il se lance et se ferme automatiquement comme si ça ne lui plaisait pas (ou bien un problème de syntaxe peut-être ?) soit ça ne change rien.
Je ne vais pas vous balancer le code tout de suite car à mon avis je dois merder dans le process de suppression via VBS (ouais je suis une ouiche en dev) mais c'est quand même assez frustrant.
Si vous aviez une tite piste, sinon j'ai aussi un problème de For Each mais je le garde au chaud pour l'instant
Merci à vous
PS : Je ne remercie pas MS pour la confusion instaurée entre VB, VBA et VBS notamment sur la syntaxe et les fonctions admises ! Grrrr
[EDIT] Toujours pas bon, la ligne de commande est bonne mais le simple script suivant ne fonctionne pas et le répertoire "profil" me fait un doigt !
Code :
Dim cmd_delete
Dim o_shell
Set o_shell = WScript.CreateObject ("WSCript.shell" )
cmd_delete = "rd Z:\profil /S /Q"
o_shell.Run (cmd_delete)
Message édité par Pymousse le 03-02-2010 à 08:17:59
Marsh Posté le 03-02-2010 à 07:33:39
Sujet résolu
'cmd /K' car rd n'est pas un exécutable reconnu de base... (st maclou) évidement !
Ne reste plus qu'à fermer la fenêtre shell résiduelle.
-----------------
[EDIT] J'ai peut-être posté un peu trop vite, je viens de voir un peu de lumière du côté de la ligne de commande du type
Bonjour,
Je suis en train de m'arracher la tête mais heureusement pour moi elle tient bien !
Je m'explique :
J'essaye simplement de supprimer un dossier.
Quelque chose comme
fonctionne très bien pour un dossier créé par moi même hors script, et ce, avec ou sans arborescence à l'intérieur.
Mais dès qu'il s'agit de supprimer des répertoires avec des demandes de confirmations du type "Attention c'est un fichier système êtes-vous sur ? Blabla", et bien, je n'ai pas d'erreur (c'est Lessieur) mais le dossier n'est pas pour autant supprimé.
Pas moyen de trouver un paramètre pour by pass la confirmation dans le script. D'ailleurs, que le problème vienne de là n'est qu'une hypothèse.
Pour préciser la chose, je passe par un mappage réseau car les dossiers que je souhaite supprimer sont sur différents serveurs d'un même domaine. Je suis certains que ces dossiers n'ont plus d'accès (ce sont des profils locaux résiduels) et si je le fais à la main en confirmant "Oui" "Oui pour tout", la suppression se passe sans problème de droits ou d'accès. Passer le script en local sur mon poste en filant les login/pass pour mapper ou bien directement depuis une session sur le domaine, le résultat est le même (Ca élimine l'hypothèse que ça pouvait venir du fait que la session est en Citrix, logique après tout c'est du simple accès de fichier via lecteur réseau)
J'ai tenté aussi la valeur True pour forcer la suppression des fichiers en lecture seule au cas où, mais soit ça me squiiz le script : il se lance et se ferme automatiquement comme si ça ne lui plaisait pas (ou bien un problème de syntaxe peut-être ?) soit ça ne change rien.
Je ne vais pas vous balancer le code tout de suite car à mon avis je dois merder dans le process de suppression via VBS (ouais je suis une ouiche en dev) mais c'est quand même assez frustrant.
Si vous aviez une tite piste, sinon j'ai aussi un problème de For Each mais je le garde au chaud pour l'instant
Merci à vous
PS : Je ne remercie pas MS pour la confusion instaurée entre VB, VBA et VBS notamment sur la syntaxe et les fonctions admises ! Grrrr
[EDIT]
Toujours pas bon, la ligne de commande est bonne mais le simple script suivant ne fonctionne pas et le répertoire "profil" me fait un doigt !
Message édité par Pymousse le 03-02-2010 à 08:17:59