Copier-coller par des Variables dans un Wscript.shell.run ne marche pa

Copier-coller par des Variables dans un Wscript.shell.run ne marche pa - VB/VBA/VBS - Programmation

Marsh Posté le 17-02-2011 à 22:02:09    

Bonjour,
 
Je me lance dans la création de script et j'ai tenté l'expérience suivante au lieu d'écrire le chemin des dossiers en dur j'ai voulu les mettre par des variables.
L'action de ce script est un copier coller de fichiers d'un répertoire vers un autre.
Et si le répertoire de destination est vide un message survient.
 
Le problème est qu'avec mes variables la copie ne se fait pas mais en revanche en dur ca marche.
 
Voici mon script qui marche :
'Permet de verrouiller les variables pour éviter les erreurs de saisie'
Option explicit
'Je définit les variables pour mon script'
Dim MonShell
'Monshell est instancier par la méthode shell
Set MonShell= Wscript.CreateObject("Wscript.shell" )
'Exécution de l'action
Monshell.Run "xcopy c:\te\*.* c:\ta"
If "c:\ta" <> " " Then
        'Message affichant l'échec'
 msgbox "Echec de la copie",0,"Copie non effectuée"  
Else
        'Message affichant la réussite'
 msgbox "Réussite de la copie",0,"Copie effectuée avec succès"
End if
 
Script qui ne marche pas:
 
'Permet de verrouiller les variables pour éviter les erreurs de saisie'
Option explicit
'Je définit les variables pour mon script'
Dim MonShell,RepSrc,RepDest
'Monshell est instancier par la méthode shell
Set MonShell= Wscript.CreateObject("Wscript.shell" )
'Message demandant le répertoire à copier
RepSrc = inputbox ("Nom du répertoire à copier :","Nom répertoire" )
'Message demandant le répertoire de destination
RepDest = inputbox ("Nom du répertoire de destination :","Nom répertoire" )
'Exécution de l'action
Monshell.Run "xcopy RepSrc\*.* RepDest"
If Repdest <> " " Then
        'Message affichant l'échec'
 msgbox "Echec de la copie",0,"Copie non effectuée"  
Else
        'Message affichant la réussite'
 msgbox "Réussite de la copie",0,"Copie effectuée avec succès"
End if
 
Repsrc = c:\te
RepDest = c:\ta
 
 
Merci par avance de votre aide :D  :D  

Reply

Marsh Posté le 17-02-2011 à 22:02:09   

Reply

Marsh Posté le 17-02-2011 à 23:27:22    

Essayer en remplaçant

Monshell.Run "xcopy RepSrc\*.* RepDest"

par

Monshell.Run "xcopy " & RepSrc & "\*.* " & RepDest

Reply

Marsh Posté le 18-02-2011 à 11:20:02    

Merci bcp ca a marché. En revanche dans dans mon if :
 
If Repdest <> " " Then
        'Message affichant la réussite'
 msgbox "Réussite de la copie",0,"Copie effectuée avec succès"
Else
        'Message affichant l'échec'
 msgbox "Echec de la copie",0,"Copie non effectuée"  
End if
 
Si je lui mets un répertoire bidon, il me dit que la copie à fonctionner hors c'est faux.  
 
Merci d'avance

Reply

Marsh Posté le 18-02-2011 à 14:20:24    

J'ai modifié mon script par ceci :
 
'Permet de verrouiller les variables pour éviter les erreurs de saisie'
Option Explicit
'Je définit les variables pour mon script'
Dim MonShell,RepSrc,RepDest,objFSO,Vide
'Monshell est instancier par la méthode shell
Set MonShell= Wscript.CreateObject("Wscript.shell" )
'Message demandant le répertoire à copier
RepSrc = inputbox ("Nom du répertoire à copier :","Nom répertoire" )
'Message demandant le répertoire de destination
RepDest = Inputbox ("Nom du répertoire de destination :","Nom répertoire" )
'Je créé l'instance de l'objet objFSO pour lui affecter comme rôle la modification des fichiers
Set ObjFSO = CreateObject("Scripting.FileSystemObject" )
If ObjFso.FolderExists(RepDest) Then
 'Exécution de l'action
 Monshell.Run "xcopy " & RepSrc & "\*.* " & RepDest
 'Message affichant la réussite'
 msgbox "Réussite de la copie",0,"Copie effectuée avec succès"
 wscript.quit  
Else
    'Message affichant l'échec'
 msgbox "Le répertoire n'existe pas! Merci de taper un chemin existant",0,"répertoire inexistant"
        RepDest = Inputbox ("Nom du répertoire de destination :","Nom répertoire" )
        Do
                'Message affichant l'échec'
  msgbox "Le répertoire n'existe pas! Merci de taper un chemin existant",0,"répertoire inexistant"
  RepDest = Inputbox ("Nom du répertoire de destination :","Nom répertoire" )
 Loop while not ObjFso.FolderExists(RepDest)
 'Exécution de l'action
 Monshell.Run "xcopy " & RepSrc & "\*.* " & RepDest
 'Message affichant la réussite'
 msgbox "Réussite de la copie",0,"Copie effectuée avec succès"
End if
 
Mais je souhaite pour la boucle Do Loop While, que si le répertoire saisie n'est pas le bon. Qu'il retourne le message d'erreur "Le répertoire n'existe pas! Merci de taper un chemin existant",0,"répertoire inexistant" tant que le répertoire n'existe pas.

Reply

Marsh Posté le 18-02-2011 à 14:33:16    

C'est bon j'ai trouvé :
 
Voici le script qui marche :
'Permet de verrouiller les variables pour éviter les erreurs de saisie'
Option Explicit
'Je définit les variables pour mon script'
Dim MonShell,RepSrc,RepDest,objFSO,Vide
'Monshell est instancier par la méthode shell
Set MonShell= Wscript.CreateObject("Wscript.shell" )
'Message demandant le répertoire à copier
RepSrc = inputbox ("Nom du répertoire à copier :","Nom répertoire" )
'Message demandant le répertoire de destination
RepDest = Inputbox ("Nom du répertoire de destination :","Nom répertoire" )
'Je créé l'instance de l'objet objFSO pour lui affecter comme rôle la modification des fichiers
Set ObjFSO = CreateObject("Scripting.FileSystemObject" )
If ObjFso.FolderExists(RepDest) Then
 'Exécution de l'action
 Monshell.Run "xcopy " & RepSrc & "\*.* " & RepDest
 'Message affichant la réussite'
 msgbox "Réussite de la copie",0,"Copie effectuée avec succès"
 wscript.quit  
Else
    'Message affichant l'échec'
 msgbox "Le répertoire n'existe pas! Merci de taper un chemin existant",0,"répertoire inexistant"
        RepDest = Inputbox ("Nom du répertoire de destination :","Nom répertoire" )
        Do
                'Message affichant l'échec'
  msgbox "Le répertoire n'existe pas! Merci de taper un chemin existant",0,"répertoire inexistant"
  RepDest = Inputbox ("Nom du répertoire de destination :","Nom répertoire" )
 Loop while not ObjFso.FolderExists(RepDest)
 'Exécution de l'action
 Monshell.Run "xcopy " & RepSrc & "\*.* " & RepDest
 'Message affichant la réussite'
 msgbox "Réussite de la copie",0,"Copie effectuée avec succès"
 wscript.quit
End if

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed