robocopy a partir d'une liste

robocopy a partir d'une liste - Stockage/Sauvegarde - Windows & Software

Marsh Posté le 25-05-2008 à 19:48:25    

Bonjour a tous,
Dans le cadre de mon travail je dois utiliser robocopy .
Robocopy devrai lire une liste, où la source et la destination sont espacé d'un ";"
exemple :\\server\dossier\fichier.pps(source);\\server1\fichier1(destination)
Robocopy devra lire cette liste et faire la sauvegarde jusqu'à la fin de cette liste.
Tout ceci devra être réalisé dans un batch.
 
N'ayant que de petites bases sur robocopy je n'arrive pas a lui faire lire la liste correctement.
 
Question1 : Comment puis-je faire ?
Question 2 :serrait il plus facile de déclarer un variable source et destination ? Et comment ?
 
Je tiens a précisez que la dite liste n'est ni modifiable ni divisible en deux (d'où le problème)
 
Je sais que pour un pro c'est fait en 5 minute mais moi je cale et c'est assez urgent
 
Help please!!!!!    
 
PS: Certains sujet semble similaire a mon problème mais ne le résolvent pas .

Reply

Marsh Posté le 25-05-2008 à 19:48:25   

Reply

Marsh Posté le 26-05-2008 à 06:12:51    

tu ouvre ta liste avec Excel, tu adapte le fichier pour le transformer en suite de commande, tu sauve sous un fichier text que tu renom en .bat et tu lance


---------------
#mais-chut
Reply

Marsh Posté le 26-05-2008 à 08:35:37    

Attention : robocopy permet de copier des dossiers, pas des fichiers !

Reply

Marsh Posté le 26-05-2008 à 22:07:35    

merci Z_cool ça marche

Reply

Marsh Posté le 26-05-2008 à 22:27:15    

Dernière petite question concernant robocopy et AutoIT(logiciel de réalisation de script)
 
je veux faire un shellexecute de robocopy avec les variables $source et $destination comme ceci :
 
ShellExecute ("robocopy.exe", $source""$dest)
 
Le problème c'est que je ne sais pas comment faire pour que AutoIt lise Le texte que contient ces variables.
Car quand je le lance il ne me signale aucune erreur mais rien ne se passe.
Je pense que ce n'ai qu'un problème de Typographie
PS:je n'ai pas mis toute les ligne de code car je sais que c'est sur celle ci que ça bloque.
 
Quelqu'un pourrai il m éclairer s'il vous plait car je ne trouve pas dans l'aide qu'il y a avec le logiciel.  siouplé!!

Reply

Marsh Posté le 27-05-2008 à 11:08:51    

On ne sait pas ce que contiennent : $source et $dest

Reply

Marsh Posté le 27-05-2008 à 14:32:44    

robocopy sert a a faire des copie de fichier dans ce cas si on a $source qui est un chemin reseau de fichier source et $dest qui est le chemin reseau du dossier de destination...
dans un .bat taper :
"robocopy c:\docs d:\backup"     sauvegarderai c:\docs dans d:\backup
 
mon script vient puisser dans un tableau qui contiens l adresse de source et de destination comme ceci  c:\docs;d:\backup
dans ce cas si $source contient c:\docs et $dest contient d:\backup...
 
Mais que se soit avec shellexecute ou Run(@ComSpec ou run n'arrivent a parametrer robocopy par rapport a $source et $dest que faisje de mal??
 
PS: j'ai testé avec des msgbox $source et $dest contiennent bien les adresses voulu

Reply

Marsh Posté le 27-05-2008 à 14:42:24    

Justement, je voulais m'assurer que tes variables contenaient les bonnes valeurs.

 

Tu as essayé en indiquant le chemin complet de robocopy ?
Tu as essayé en écrivant en dur l'adresse des tes dossiers dans ta ligne de commande ? (au lieu de passer par les variables pour le moment), juste pour s'assurer que cette syntaxe est bonne.

 

Si tu peux nous coller ton script ici, comme ça je teste de mon côté.


Message édité par blueteen le 27-05-2008 à 14:44:05
Reply

Marsh Posté le 27-05-2008 à 15:14:21    

#cs ----------------------------------------------------------------------------
 
 AutoIt Version: 3.2.10.0
 Author:         myName
 
 Script Function:
 Template AutoIt script.
 
#ce ----------------------------------------------------------------------------
 
; Script Start - Add your code below here
#include <File.au3>
 
 
Dim $dest, $source, $line, $file, $CountLines, $i, $array[3]
 
 
$file = FileOpen ("test.txt", 0)
$CountLines = _FileCountLines("test.txt" )
 
If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file." )
    Exit
EndIf
for $i=0 to ($CountLines - 1)
    $line = FileReadLine($file)
 $array = StringSplit($line, ';', 1)
 $source = $array[1]
 $dest = $array[2]
 ShellExecute ("c:\robocopy.exe", $source""$dest)
next

Reply

Marsh Posté le 27-05-2008 à 15:30:37    

Je viens de faire un test, et ce code marche :

Code :
  1. ShellExecute("c:\robocopy", "c:\scripts c:\scripts_backup" )


 
Que contient 'exactement' $source
Idem pour $dest ?
 
Marque nous tout ici, avec les / etc...

Reply

Marsh Posté le 27-05-2008 à 15:30:37   

Reply

Marsh Posté le 27-05-2008 à 15:43:46    

$source c:\test
$dest c:\testdest
 
mais je viens de voir sa marche bien quand je met le chemin complet
Le probleme c 'est que quand je met la variable il affiche le nom de la variable au lieu d afficher ce que contient la variable :
dans la fenetre dos robocopy affiche : robocopy $souce $dest
au lieu d affcher le contenu soit : robocopy c:\test c:\testdest
 
donc ma question serai comment fait on comprendre a robocopy qu il doit lire le contenu de la variable et non le nom de la variable  
sais-tu le faire ???

Reply

Marsh Posté le 27-05-2008 à 15:49:08    

Je viens de faire un test rapide avec ce code qui fonctionne (je concatène mes 2 variables au préalable, et j'utilise la variable finale dans ma ligne de commande de robocopy).
 

Code :
  1. Dim $dest, $source, $chemin
  2. $source = "c:\scripts"
  3. $dest = "c:\scripts_backup"
  4. $chemin = $source&" "&$dest
  5. ShellExecute("c:\robocopy", $chemin)


 
Car comme toi, dans le ShellExecute, je n'arrivais pas à faire passer les 2 variables.
 
Si ça peut te dépanner en attendant de trouver la bonne syntaxe pour utiliser tes 2 variables dans ShellExecute.

Reply

Marsh Posté le 27-05-2008 à 15:50:11    

Bon ben hop, c'est bon comme ça :

Code :
  1. Dim $dest, $source
  2. $source = "c:\scripts"
  3. $dest = "c:\scripts_backup"
  4. ShellExecute("c:\robocopy", $source&" "&$dest)


Message édité par blueteen le 27-05-2008 à 15:50:44
Reply

Marsh Posté le 27-05-2008 à 15:56:28    

ouai c'est cool ça marche c etait un probleme de syntaxe tout simplement
un GRAND merci a toi blueteen

Reply

Sujets relatifs:

Leave a Replay

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