[R] Script de sauvegarde....
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Script de sauvegarde....
Bonjour,
Je souhaiterai créer une console qui permet de vérifier les résultats de plusieurs commandes externes passés à la suite des autres afin de créer un système de sauvegarde.
J'utilise actuellement des script batch en ligne de commande.
Existe t'il une équivalence à la commande subst du dos en autoit?
Merci par avance.
Je souhaiterai créer une console qui permet de vérifier les résultats de plusieurs commandes externes passés à la suite des autres afin de créer un système de sauvegarde.
J'utilise actuellement des script batch en ligne de commande.
Existe t'il une équivalence à la commande subst du dos en autoit?
Merci par avance.
Modifié en dernier par r140 le mar. 06 nov. 2007 09:56, modifié 1 fois.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: Script ou cmd
DriveMapAddr140 a écrit :Existe t'il une équivalence à la commande subst du dos en autoit?
sinon, vous pouvez utiliser la commande Run pour lancer une commande DOS ...
PS: Le début de la question, n'est pas très clair !
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: Script ou cmd
Mon projet est de créer un script de sauvegarde des fichiers du disque, je voudrai créer un script autoit pour faire cela.
Pour faire cela je voudrai remplacer au maximum les commandes externes car elles me posent problèmes avec les environnements lié à runas as (je souhaite protéger mon dossier de sauvegarde afin que seul l'utilisateur sauvegarde et l'administrateur y est accès).
Le problème est le suivant je souhaite consulter le résultat de mes commandes, mais sans le msgbox,dans une fenêtre du type edit.
Pouvez vous me donner des pistes pour ce programme ?
Merci
Pour faire cela je voudrai remplacer au maximum les commandes externes car elles me posent problèmes avec les environnements lié à runas as (je souhaite protéger mon dossier de sauvegarde afin que seul l'utilisateur sauvegarde et l'administrateur y est accès).
Le problème est le suivant je souhaite consulter le résultat de mes commandes, mais sans le msgbox,dans une fenêtre du type edit.
Pouvez vous me donner des pistes pour ce programme ?
Merci
Tlem a écrit :DriveMapAddr140 a écrit :Existe t'il une équivalence à la commande subst du dos en autoit?
sinon, vous pouvez utiliser la commande Run pour lancer une commande DOS ...
PS: Le début de la question, n'est pas très clair !
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: Script ou cmd
Désolé, je crois que je suis complètement polio ce soir, j'ai beau relire, je ne comprend toujours pas ce que vous chercher à faire !!!r140 a écrit :Le problème est le suivant je souhaite consulter le résultat de mes commandes, mais sans le msgbox,dans une fenêtre du type edit.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: Script ou cmd
Bonjour,
Je pense que c'est le point le plus difficile à expliquer,
je vais donnée un exemple concret, je souhaite avoir le résultat des commandes, comme lorsque on tape une commande cmd les une à la suite des autres dans un batch,
ou comme la création d'un iso lors de la compilation d'un cd bart:

Je pense que ça sera plus clair....
Je pense que c'est le point le plus difficile à expliquer,
je vais donnée un exemple concret, je souhaite avoir le résultat des commandes, comme lorsque on tape une commande cmd les une à la suite des autres dans un batch,
ou comme la création d'un iso lors de la compilation d'un cd bart:

Je pense que ça sera plus clair....

Tlem a écrit :Désolé, je crois que je suis complètement polio ce soir, j'ai beau relire, je ne comprend toujours pas ce que vous chercher à faire !!!r140 a écrit :Le problème est le suivant je souhaite consulter le résultat de mes commandes, mais sans le msgbox,dans une fenêtre du type edit.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Effectivement, comme le dit ani, si vous voulez lire le résultat d'une commande externe, et la retranscrire dans votre script, alors utiliser l'exemple donner pour la commande StdoutRead dans l'aide de AutoIt.
Si c'est pour retranscrire le résultat d'une commande AutoIt, servez vous du résultat retourner par cette commande.
Comme par exemple pour DriveMapAdd :
Selon la doc AutoIt de la commande DriveMapAdd, voici les résultats possibles :
Si c'est pour retranscrire le résultat d'une commande AutoIt, servez vous du résultat retourner par cette commande.
Comme par exemple pour DriveMapAdd :
Code : Tout sélectionner
$Res = DriveMapAdd("X:", "\\myserver\stuff")
When the function fails (returns 0) @error contains extended information:
1 = Undefined / Other error. @extended set with Windows API return
2 = Access to the remote share was denied
3 = The device is already assigned
4 = Invalid device name
5 = Invalid remote share
6 = Invalid password
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
script de sauvegarde
Merci de vos réponses...
La commande drivemapadd ne permet pas de créer un lecteur virtuel lorsque la source est en local.
Exemple:
$res=DriveMapAdd("X:", "D:\mesdocs")
Ne créer pas de lecteur vituel X:,la commande reste sans résultat, je pense que c'est normal car elle est conçu pour les partages réseaux.
Si une personne
Merci
La commande drivemapadd ne permet pas de créer un lecteur virtuel lorsque la source est en local.
Exemple:
$res=DriveMapAdd("X:", "D:\mesdocs")
Ne créer pas de lecteur vituel X:,la commande reste sans résultat, je pense que c'est normal car elle est conçu pour les partages réseaux.
Si une personne
Merci
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
je ne connait ni l'un ni lautre (n'ayant pour le moment jamais eu a les utiliser.
ps : le subst on l'utilse pour quel circontance ? iis/ftp ?ou comme un raccourci, merci d'avance
sinon tu peux utiliser la fonction dos dans ton programme autoit
et renvoié les info du dos vers le édit
lance l'aide d'autoit va sur onglet recherche et tape std
tu obtiendra 4 sortie normalement (je dois avoir une démo quelque part sur la machine)
ps : le subst on l'utilse pour quel circontance ? iis/ftp ?ou comme un raccourci, merci d'avance
sinon tu peux utiliser la fonction dos dans ton programme autoit
et renvoié les info du dos vers le édit
lance l'aide d'autoit va sur onglet recherche et tape std
tu obtiendra 4 sortie normalement (je dois avoir une démo quelque part sur la machine)
script de sauvegarde
Je vous donnerai l'avancement et les questions de mon projet sur ce sujet
Pour l'instant j'essaie d'avoir des résultats avec la commandes dir
Réponse au PS
La commande subst simplifie la gestion des dossier:
D:\sauvedocs\mesdocs\r140\
subst s: "D:\sauvedocs\mesdocs\r140"
dir s: ->affiche le contenu du dossier D:\sauvedocs\mesdocs\r140\
Il permet aussi de faciliter la modification des chemins d'accès, au lieu de modifier 10, on en change qu'un seul,cela est plus gérable et permet de faire moins d'erreurs
Pour l'instant j'essaie d'avoir des résultats avec la commandes dir
Réponse au PS
La commande subst simplifie la gestion des dossier:
D:\sauvedocs\mesdocs\r140\
subst s: "D:\sauvedocs\mesdocs\r140"
dir s: ->affiche le contenu du dossier D:\sauvedocs\mesdocs\r140\
Il permet aussi de faciliter la modification des chemins d'accès, au lieu de modifier 10, on en change qu'un seul,cela est plus gérable et permet de faire moins d'erreurs
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
d'accord 
voici un petit exemple a modifier merci d'avance
tu tape n'importe cmd tu la recoi dans le edit (vu que je retrouve plus mon projet dos en gui
, navré, )

voici un petit exemple a modifier merci d'avance
tu tape n'importe cmd tu la recoi dans le edit (vu que je retrouve plus mon projet dos en gui

Code : Tout sélectionner
#include <GUIConstants>
;#include <File> ; le file ne sert pas dans l'exemple
#include <Constants>
Opt("GUIOnEventMode", 1); tu utilise le event mode (lire chapitre)
Opt("TrayIconHide", 1)
$Gui = GUICreate("Dos_Gui ?", 378, 305, 193, 115)
GUISetOnEvent($GUI_EVENT_CLOSE, "quitter")
$Input1 = GUICtrlCreateInput("", 16, 16, 345, 21)
GUICtrlSetOnEvent($Input1,"cmd")
$Edit1 = GUICtrlCreateEdit("", 16, 48, 345, 233)
GUISetState(@SW_SHOW,$Gui)
While 1
sleep(100)
WEnd
Func cmd()
$line = ""
$d = GUICtrlRead($Input1)
$foo = Run(@ComSpec & " /c " & $d, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
$line = $line & StdoutRead($foo)
If @error Then ExitLoop
GUICtrlSetData($Edit1, $line)
Wend
While 1
$line = StderrRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDERR read:", $line)
Wend
EndFunc
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: script de sauvegarde
Pourquoi vous compliquer la vie comme ceci ?r140 a écrit :La commande subst simplifie la gestion des dossier:
D:\sauvedocs\mesdocs\r140\
subst s: "D:\sauvedocs\mesdocs\r140"
dir s: ->affiche le contenu du dossier D:\sauvedocs\mesdocs\r140\
Avec AutoIt, faites tout simplement :
Code : Tout sélectionner
$Drv = "D:\sauvedocs\mesdocs\r140"
Run ( @ComSpec & " /c dir " & '"' & $Drv & '"' )
Code : Tout sélectionner
#include <File.au3>
#include <array.au3>
$Drv = "C:\windows"
$Res = _FileListToArray ( $Drv , "*.Dat" , 1 )
_ArrayDisplay ( $Res )
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: script de sauvegarde
Merci de cette solution....
Mais dans ce cas j'ai un autre problème qui se pose, peux t'on utiliser des variables déjà déclarer dans un autre script
$Drv déclarer dans sauve_principal.au3
Sauve_principale fait appel sauve_doc.au3
Merci par avance
Mais dans ce cas j'ai un autre problème qui se pose, peux t'on utiliser des variables déjà déclarer dans un autre script
$Drv déclarer dans sauve_principal.au3
Sauve_principale fait appel sauve_doc.au3
Merci par avance
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: script de sauvegarde
Sans aucun problème.r140 a écrit :Mais dans ce cas j'ai un autre problème qui se pose, peux t'on utiliser des variables déjà déclarer dans un autre script
$Drv déclarer dans sauve_principal.au3
Sauve_principale fait appel sauve_doc.au3
2 solutions :
- Passer votre variable par l'intermédiaire d'un fichier temp, ou une clé de la base de registre (Assez lourd)
ou mieux :
- Passer votre variable en paramètre à une des fonctions de sauve_doc.au3.
Imaginons que dans sauve_doc.au3 il y ait une fonction comme ceci :
Code : Tout sélectionner
Func SauveDoc ( $Drv )
$Res = _FileListToArray ( $Drv , "*.Dat" , 1 )
Return $Res
EndFunc
Code : Tout sélectionner
$Drv = "C:\windows"
$Resultat = SauveDoc ( $Drv )
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: script de sauvegarde
Voici ce que j'ai créer, il y a surement des amélioration à faire...
Code : Tout sélectionner
#include <Constants.au3>
#include <GUIConstants.au3>
Dim $out , $err , $run , $line1 , $line2 , $myedit , $myedit2 , $SauveDest , $TEMP , $nberr , $sauveProv
$temp = EnvGet ( "TEMP" )
$sauveProv = EnvGet ( "SystemDrive" ) & "\sauvedoc"
GUICreate ( "Sauvegarde du PC..." )
GUISetState ( )
$out = "Sauvegarde en cour..." & @CRLF
If not FileExists ( "7za.exe" ) then
$err = $err & "Le fichier 7za.exe n'a pas été trouvé , il fait partie du logiciel 7zip , celui ci est nécéssaire pour la sauvegarde"
$nberr = 1
Call ( "LireSortie" )
Call ( "error" )
Exit
Else
EndIf
$SauveDest = IniRead ( "sauvedoc.ini" , "sauve" , "SauveDest" , "NotFound" )
If $SauveDest = "NotFound"Or $SauveDest = "" then IniWrite ( "sauvedoc.ini" , "sauve" , "SauveDest" , $sauveProv )
$SauveDest = $sauveProv
Else
EndIf
MsgBox ( 0 , "verif" , """" & @UserProfileDir & "\Application Data\thunderbird\Profiles\*.*""" )
$out = $out & "Vital:Bureau , Favorie , mail dossier sauvegarder sous" & $SauveDest & @CRLF
Call ( "LireSortie" )
$run = Run ( @ComSpec & " /c 7za.exe u - r - tzip " & $SauveDest & "\" & @UserName & "\profile\bureau\Bureau.zip" & " " & """" & @UserProfileDir & "\bureau\*.*""" & " - w" & $temp , "" , @SW_HIDE , $STDERR_CHILD + $STDOUT_CHILD )
$proc1 = ProcessExists ( "7za" )
Call ( "Process" )
Call ( "LireSortie" )
$run = Run ( @ComSpec & " /c 7za.exe u - r - tzip " & $SauveDest & "\profile\favoris\FavorisIE.zip" & " " & """" & @UserProfileDir & "\favoris\*.*""" & " - w" & $temp , "" , @SW_HIDE , $STDERR_CHILD + $STDOUT_CHILD )
Call ( "Process" )
Call ( "LireSortie" )
$run = Run ( @ComSpec & " /c 7za.exe u - r - tzip " & $SauveDest & "\profile\firefox\Bookmark\Bookmark_firefox.zip" & " " & """" & @UserProfileDir & "\Application Data\Mozilla\Firefox\Profiles\Bookmark*.*""" & " - w" & $temp , "" , @SW_HIDE , $STDERR_CHILD + $STDOUT_CHILD )
Call ( "Process" )
Call ( "LireSortie" )
$run = Run ( @ComSpec & " /c 7za.exe u - r - tzip " & $SauveDest & "\profile\mail\thunderbird.zip" & " " & """" & @UserProfileDir & "\Application Data\thunderbird\Profiles\*.*""" & " - w" & $temp , "" , @SW_HIDE , $STDERR_CHILD + $STDOUT_CHILD )
Call ( "Process" )
Call ( "LireSortie" )
$run = Run ( @ComSpec & " /c 7za.exe u - r - tzip " & $SauveDest & "\sauvedd.zip" & " *.* - w" & $temp , "" , @SW_HIDE , $STDERR_CHILD + $STDOUT_CHILD )
Call ( "Process" )
Call ( "LireSortie" )
$myedit = GUICtrlCreateEdit ( $out & @CRLF , 25 , 32 , 300 , 150 , $ES_AUTOVSCROLL + $WS_VSCROLL )
$myedit2 = GUICtrlCreateEdit ( $err & @CRLF , 25 , 200 , 300 , 150 , $ES_AUTOVSCROLL + $WS_VSCROLL )
Func LireSortie ( )
While 1
$line1 = StdoutRead ( $run )
If @error Then ExitLoop
$out = $out & @CRLF & $line1
Wend
While 1
$line2 = StderrRead ( $run )
If @error Then ExitLoop
$nberr = $nberr + 1
$err = $err & @crlf & $line2
Wend
EndFunc
Func Process ( )
while 1
If ProcessExists ( "7za.exe" ) Then
Sleep ( - 1 )
ExitLoop
Else
ExitLoop
EndIf
wend
EndFunc
Func error ( )
$myedit = GUICtrlCreateEdit ( $out & @CRLF , 25 , 32 , 300 , 150 , $ES_AUTOVSCROLL + $WS_VSCROLL )
$myedit2 = GUICtrlCreateEdit ( $err & @CRLF , 25 , 200 , 300 , 150 , $ES_AUTOVSCROLL + $WS_VSCROLL )
MsgBox ( 48 , "Erreur" , "Terminé avec " & $nberr & " erreur ( s ) ..." )
While 1
$msg = GUIGetMsg ( )
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
EndFunc
While 1
$msg = GUIGetMsg ( )
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
MsgBox ( 0 , "Debug" , "Exiting..." )
Exit
Quelques petites remarques !
- FileExists ( "7za.exe" ) cela sous entend que le script fonctionne dans le repertoire de 7zip...il vaudrait mieux utiliser un regread() pour connaitre le repertoire d'installation de 7zip.
- Il faut crée ta fenetre avec tous les elements puis après modifier les elements. Ton edit est crée dans la fonction error ce qui n'est pas normal. Voila le schema standard:
Include ...
Guicreate...
guisetstate()
While 1
Wend
Fonction() ... - L'instruction call n'est pas necessaire fonction() suffit.
- Sleep ( - 1 ) Tu remontes le temps
? c'est sleep(1) !
- Une seule fonction While 1 suffit ! la plus par des instructions sont en double il faut les réunir !
Modifié en dernier par Voodoo le mar. 06 nov. 2007 11:30, modifié 1 fois.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Bonsoir r140.
J'avais commencé les mêmes recommandations que Voodoo, mais comme il m'a devancé ...
Voici la suite :
Vous utilisé pour récupérer une variable d'environnement, la fonction EnvGet().
Sachez qu'il est possible avec AutoIt d'avoir la variable directement.
Au lieu de faire : $temp = EnvGet ( "TEMP" ) je vous conseil d'utiliser la variable @tempdir.
Idem pour EnvGet ( "SystemDrive" ) qui peut être remplacer par @SystemDir.
Dans l'aide de AutoIt, faites une recherche sur Macro Reference pour avoir la liste de toutes les valeurs qui peuvent être récupérer par AutoIt .
J'avais commencé les mêmes recommandations que Voodoo, mais comme il m'a devancé ...
Voici la suite :
Vous utilisé pour récupérer une variable d'environnement, la fonction EnvGet().
Sachez qu'il est possible avec AutoIt d'avoir la variable directement.
Au lieu de faire : $temp = EnvGet ( "TEMP" ) je vous conseil d'utiliser la variable @tempdir.
Idem pour EnvGet ( "SystemDrive" ) qui peut être remplacer par @SystemDir.
Dans l'aide de AutoIt, faites une recherche sur Macro Reference pour avoir la liste de toutes les valeurs qui peuvent être récupérer par AutoIt .
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Script de sauvegarde....
Bonjour,
Merci pour les remarques, je les utiliserai, la seule chose est le sleep(-1), qui est "normale", ce voulais faire au départ c'était un runwait() mais cette fonction ne dispose pas des arguments "$STDERR_CHILD + $STDOUT_CHILD", je veux attendre qu'une commande se termine avant de commencer la suivante et si possible pouvoir la débbugger (non présent dans mon script pour l'instant).
Merci
Merci pour les remarques, je les utiliserai, la seule chose est le sleep(-1), qui est "normale", ce voulais faire au départ c'était un runwait() mais cette fonction ne dispose pas des arguments "$STDERR_CHILD + $STDOUT_CHILD", je veux attendre qu'une commande se termine avant de commencer la suivante et si possible pouvoir la débbugger (non présent dans mon script pour l'instant).
Merci