Logo du forum
 

Forum TT-Hardware

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Tutoriaux » Tutorial : Créer des scripts pour windows
Login Mot de passe

1 visiteurs sur ce topic (0 membre(s), 1 invité(s) )


Auteur
Sujet : Tutorial : Créer des scripts pour windows
HellDuck
Vétéran
Membre # 5002

 Avatar du membre
Lieu : Paris

Messages :
4207 (0.93 par jour)


Score :

Message du 21-11-2002 @ 19:20      Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Tutorial : Créer des scripts pour windows

Le but de ce tutorial est d'apprendre a créer un script pour windows. Ce script peut par exemple servir a faire des sauvegarde de vos documents ou nétoyer les dossiers temporaires de windows, on peut aussi planifier la défragmentation des disques dur.

Ce tutorial va etre découpé en plusieurs étapes :
  • Chapitre I : Création du fichier et langage utilisé
  • Chapitre II : Les principales commandes
  • Chapitre III : Exemples de scripts et explications
  • Chapitre IV : exécution des scripts
  • Chapitre V : Remarques supplémentaires et conclusion





Chapitre I : Création du fichier et langage utilisé

Il existe plusieurs langages permettant de créer des scripts pour windows. Ils ont chacun leur qualités et leurs defauts. Ce qui est recherché ici c'est la simplicité donc nous allons nous tourner vers un langage basique, mais il est tout a fait possible d'utiliser des langage tel que VBS pour faire les même choses voir beaucoup plus.
Nous allons donc utiliser les commandes DOS et ainsi créer des fichiers dont l'extension sera .bat
Ces fichiers pourront etre exécuté très simplement sous windows et ne sont pas compliquer a comprendre et créer.

Je rassure les pros du DOS ce que nous allons voir n'est pas très évolué mais permet deja de rendre beaucoup de service.

Nous allons maintenant voir les commandes les plus utiles associé a chaque type de scripts : sauvegarde, netoyage, defragmentation, scan ...

Les fichiers .bat sont de type texte, nous allons donc utiliser le bloc note ou un éditeur de texte standard.

Les commandes s'enchainent simplement en les mettant les unes a la suite des autres sur chaque ligne du fichier.




Chapitre II : Les principales commandes

Remarque : Suivant la version de windows les options des commandes peuvent changer de syntaxe. Pour afficher l'aide sur une commande il suffit d'ouvrir une fenetre DOS et de taper le nom de la commande suivit de "/?".

Prenons comme première utilisation le script de Sauvegarde.
Les commandes les plus utiles sont :
  • copy : copier/coller
  • move : couper/coller
  • del / rmdir : supprimer (fichier / répertoire)
  • mkdir : création de dossier
  • rename : renommage


-> La commande copy permet de copier un fichier ou un dossier.

Sans plus attendre voyons la syntaxe :

copy fichier_source fichier_destination

Pour copier le fichier se trouvant dans le dossier c:testfichier1.txt vers le dossier d:save
il suffit de taper la commande :

copy c:testfichier1.txt d:save

Si l'on souhaite au passage renommer le fichier on peut spécifier son nouveau nom :

copy c:testfichier1.txt d:savefichier2.txt

On peut aussi copier tous les fichiers du dossier en mettant *.* a la place du nom :

copy c:test* d:save

Attention : la commande copy écrase les fichiers ayant le même nom.
Il est aussi possible par exemple de ne copier que les fichiers ayant une partie de leur nom en commun en replacant le reste du nom par * :

copy c:test*save* d:save

Cette commande copie uniquement les fichier ayant "save" dans leur nom.

-> La commande move permet de deplacer un fichier ou dossier

La syntaxe est la suivante :

move fichier_source fichier_destination

Pour deplacer le fichier c:fichier.txt vers le dossier c:savefichier.txt il faut donc faire :

move c:fichier.txt c:save

Remarque : aucune confirmation n'est demandé.


-> La commande del permet de supprimer un fichier.

La syntaxe est la suivante :

del nom_fichier

Pour supprimer le fichier c:testfichier1.txt il faut donc faire :

del c:testfichier1.txt

Attention : Aucune demande de confirmation n'est faite ! Pour qu'il y en ait une il faut ajouter /p a la fin de la commande. De même pour que les fichiers en lecture seule soit supprimer il faut ajouter /f. l'option /q assure qu'il n'y aura pas de message de confirmation.
Comme vu plus haut pour supprimer plusieurs fichiers il suffit de mettre * dans le nom :

del c:test*

Cette commande supprime tous les fichiers du dossier c:test
Remarque : En associant la comande copy et del on peut ainsi faire l'équivalent d'un couper/coller.


-> La commande rmdir ou rd permet de supprimer un dossier.

La syntaxe est la suivante :

mrdir nom_dossier

pour supprimer le dossier c:test il faut donc faire :

rmdir c:test

Attention : si le dossier n'est pas vide celui ci ne sera pas supprimer.
Pour supprimer le dossier et tout ce qu'il contient il faut ajouter /s a la fin de la commande :

rmdir c:test /s

Attention : un message de confirmation est demandé lorsque l'on supprime le contenu du dossier. Pour qu'il n'y ait pas cette confirmation il est possible de mettre l'option /q a la fin de la ligne.


-> La commande mkdir permet de créer un dossier.

La syntaxe est la suivante :

mkdir nom_dossier

Pour créer le dossier d:save il faut donc faire :

mkdir d:save

Il est possible de crée plusieurs dossiers imbriqué d'un seul coup par exemple :

mkdir d:savetest1test2

Cette commande va créer dans le dossier save du disque D un dossier test1 et dans celui ci un dossier test2


-> La commande rename ou ren permet de renommer un fichier ou un dossier.

La syntaxe est la suivante :

ren nom_depart nom_arrivé

Pour renommer le dossier d:save en d:sauvegarde il faut donc faire :

ren d:save d:sauvegarde

Idem pour renommer un fichier :

ren c:fichier1.txt c:fichier2.txt

Remarque : il est conseiller de toujours mettre le chemin complet vers les fichiers et dossiers cibles de ces commandes.

Avec toutes ces commandes il est possible de réaliser des sauvegardes ou de faire des scripts de netoyage.
Dans le cas des sauvegardes il n'est pas possible avec de simple commandes DOS de lancer par exemple une gravure. Il est possible de faire des sauvegardes soit sur un lecteur type zip ou disquette ou sur un autre disque dur ou autre partition.
L'avantage du script est de pouvoir etre automatisé et surtout permet de regrouper plusieurs fichier au même endroit pour ensuite un archivage plus facile.

Dans le cas d'un script de netoyage il faut utiliser les commandes de suppression et surtout connaitre les chemin complet des dossiers contenant des fichiers temporaires.

Voyons maintenant les commandes permettant de controler le defragmenteur de disque et le scandisk de windows :

-> La commande chkdsk permet de lancer le scandisk de windows.

La syntaxe est la suivante :

chkdsk nom_lecteur

Il est possible de lancer le scandisk sur un lecteur complet (exemple c :) mais aussi sur un dossier particulier (exemple c:windows)
La commande chkdsk toute seule ne fait qu'un scan en "lecture seule" pour que les erreurs soient corrigées au fur et a mesure il faut ajouter /f a la fin de la commande.

chkdsk c: /f

Cette commande permet de faire un scandisk du disque c: et de réparer les erreurs.


-> La commande defrag permet de lancer le defragmenteur de disque de windows.

La syntaxe est la suivante :

defrag nom_lecteur

Pour defragmenter le disque c: il faut donc faire :

defrag c:

Pour faire juste une analyse il faut ajouter le parametre -a a la fin de la commande
Pour forcer la defragmentation il faut ajouter le parametre -f a la fin de la commande
En ajoutant -v le defragmenteur affichera les détails.





Chapitre III : Exemples de scripts et explications

Voici le contenu d'un fichier de script permettant de faire la sauvegarde de plusieurs fichiers provenant de divers dossiers.
Les explications sont juste en dessous du scripts.

Code :



fichier : save.bat
<font color="blue">
echo Debut de la sauvegarde
echo création du dossier save2
mkdir d:save2
echo OK
echo creation du dossier documents
mkdir d:save2documents
echo OK
echo copie des documents
copy c:documents* d:save2documents
echo OK
echo creation du dossier imagestth
mkdir d:save2imagestth
echo OK
echo copie des fichiers images de TTH
copy c:images*tth*.* d:save2imagestth
echo OK
echo suppression des images
del c:images*.*
echo OK
echo suppression ancien dossier save
rmdir d:save /s /q
echo OK
echo renommage du dossier save2
ren d:save2 d:save
echo OK
echo Fin de la sauvegarde
exit
</font>



On constate donc que les commandes se succedent simplement en les mettant sur une ligne les unes a la suite des autres.
La commande echo permet d'afficher du texte lors de l'exécution du script.
Comme on peut le voir il y a beaucoup de ligne echo ce qui permet d'avoir un suivit de la progression du script et de savoir ou ca en est si il y a un blocage.
On peut remarquer aussi que la sauvegarde se fait d'abord dans un dossier temporaire (save2) puis a la fin on détruit l'ancienne sauvegarde et on renomme le fichier temporaire. Cette technique permet de ne rien perdre en cas de blocage du script.
La commande exit est facultative : elle permet de fermer la fenetre DOS à  la fin du traitement chose qui se fait si tout se passe bien tout seul.





Chapitre IV : exécution des scripts

Pour exécuter les scripts il y a plusieurs technique possibles :
  • Soit il faut passer par le planificateur de tache windows : pour le cas ou les actions doivent etre faites a intervalle régulier. Exemple : tous les dimanches à  23h00.
  • Soit il est possible de mettre les fichiers .bat dans le dossier "demarrage" du menu démarrer et dans ce cas les scripts se lanceront a l'ouverture de windows.
  • Soit il faut exécuter les fichiers .bat manuellement en double cliquant dessus au moment ou l'on souhaite faire les actions présente dans le script.
On peut bien évidement mixer toutes ces techniques et créer autant de scripts que l'on veut.
Il est aussi possible de créer un script qui lance les autres scripts les uns a la suites des autres (cela permet de décomposé les taches en partie élémentaires pour plus de facilité a les modifier).
Pour cela il suffit d'indiquer le chemin vers le script comme une commande. Pour lancer le script save.bat present sur c: depuis le fichier script.bat il faut juste indiquer dans ce dernier :

c:save.bat

Remarque : il peut etre interessant de planifier la defragmentation des disques dur pendant par exemple l'heure des repas : une defragmentation regulière ne prends pas beaucoup de temps.





Chapitre V : Remarques supplémentaires et conclusion

Pour l'instant il n'y a pas vraiment de remarques supplémentaires a faire. J'ajouterais vos commentaires et apport personnel ici. Je suis donc ouvert a toutes informations complémentaires que j'aurais pu oublier.

Je vous invite cependant a consulter l'aide de windows au chapitre MS-DOS / commandes ou de cherches plus d'infos sur les commandes sur internet si vous souhaitez avoir une description plus détaillé, je me suis seulement interéssé ici qu'au commandes les plus utiles.

Merci d'avoir lu jusqu'au bout et bonne "programmation" ;)

J'accepte aussi vos commentaires par PM ;)
----------
www.hellduck.com
- Haut de page -
Coolmicro
Sage
Membre # 4764

 
Lieu : Paris

Messages :
1173 (0.26 par jour)


Score :

Message du 21-11-2002 @ 20:40   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Pas mal... ;)

Je trouve seulement que tu aurais du intègrer la commande xcopy, en plus ou même à  la place de copy, absolument nècessaire, indispensable, pour les scripts bat sous Windows, par exemple pour faire des sauvegardes incrèmentielles, automatiques, de dossiers tels que "Mes documents".

Je rappelle les paramètres de cette commande :

Copie des fichiers et des arborescences de rèpertoires.

XCOPY source [destination] [/A | /M] [/D[ :D ate]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
[/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
[/EXCLUDE:fich1[+fich2][+fich3]...]

source Spècifie le ou les fichiers à  copier.

destination Spècifie l'emplacement et/ou le nom de nouveaux fichiers.

/A Copie uniquement les fichiers ayant l'attribut archive, ne
modifie pas l'attribut.

/M Copie uniquement les fichiers ayant l'attribut archive,
dèsactive l'attribut archive.

/D:m-j-a Copie les fichiers modifiès à  partir de la date spècifièe.
(attention, c'est le format de date donnè par country dans
config.sys, dont, sous Windows 2000 ou XP, c'est le format
amèricain (m-j-a))
Si aucune date n'est donnèe, copie uniquement les fichiers dont
l'heure source est plus rècente que l'heure de destination.

/EXCLUDE:fich1[+fich2][+fich3]...
Spècifie une liste de fichiers contenant des chaà®nes. Quand une
de ces chaà®nes se retrouve dans le chemin d'accès absolu au
fichier à  copier, ce fichier est exclu de la copie. Par exemple,
spècifier une chaà®ne telle que obj ou .obj exclura tous les
fichiers du rèpertoire obj ou tous les fichiers dont l'extension
est .obj, respectivement.

/P Avertissement avant la crèation de chaque fichier de destination.

/S Copie les rèpertoires et sous-rèpertoires sauf ceux qui sont
vides.

/E Copie les rèpertoires et sous-rèpertoires, y compris vides.
Identique à  /S /E. Peut être utilisè pour modifier /T.

/V Vèrifie chaque nouveau fichier.

/W Vous demande d'appuyer sur une touche avant la copie.

/C Continuer la copie même si des erreurs se produisent.

/I Si la destination n'existe pas et que plus d'un fichier est
copiè, assume que la destination est un rèpertoire.

/Q N'affiche pas les noms de fichiers lors de la copie.

/F Affiche les noms source et de destination complets à  la copie.

/L Affiche les fichiers qui seraient copiès.

/H Copie ègalement les fichiers cachès et les fichiers système.

/R Remplace les fichiers en lecture seule.

/T Crèe la structure de rèpertoires mais ne copie pas les fichiers.
N'inclut pas les rèpertoires ou sous-rèpertoires vides. /T /E
inclut les rèpertoires et sous-rèpertoires vides.

/U Copie seulement les fichiers qui existent dèjà  en destination.

/K Copie les attributs. Xcopy normal rètablira les attributs de
lecture seule.

/N Copie en utilisant les noms courts gènèrès.

/O Copie les informations d'appartenance et d'ACL des fichiers.

/X Copie les paramètres d'audit de fichiers (implique /O).

/Y Supprime la demande de confirmation de remplacement de
fichiers de destination existants.

/-Y Provoque la demande de confirmation de remplacement d'un fichier
de destination existant.

/Z Copie les fichiers du rèseau en mode redèmarrable.

L'option /Y peut être prèsente dans la variable d'environnement COPYCMD.
Elle peut être ignorèe en utilisant /-Y dans la ligne de commande.

[message édité le 21-11-2002 @ 20:44 Par Coolmicro]
----------
Ebooks libres et gratuits : un site et un groupe qui proposent des tas d'ebooks gratuits faits à partir de textes classiques libres de droits.
Chroniques linuxiennes d'un windowsien : un blog Linux où je parle de la Mepis, et surtout de la Slax, live distribution que j'utilise sur clé USB.
- Haut de page -
[KdZ'] ®
Sage
Membre # 4178

 
Lieu : La Baule (44-FR)

Messages :
1744 (0.38 par jour)


Score :

Message du 30-11-2002 @ 13:26   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Excelent, je me le suis mis en .pdf, si vous le voulez : Crèer_des_scripts_pour_windows.pdf ;)
----------
[BOOKMARK TTH] | Ajouter un site
- Haut de page -
ccavs
Master
Membre # 3973

 Avatar du membre
Lieu : Brest

Messages :
465 (0.1 par jour)


Score :

Message du 19-02-2006 @ 22:07   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Salut
Je viens de redecouvrir les commandes ms-dos... nostalgie ;)
Bon ben maintenant, mes enfants jouent Zoo tycoon soit sur le pc portable soit sur le pc fixe... et donc nous jonglons avec les sauvegardes :mad: :mad:
Je souhaite donc leur mettre en place un script qu'ils lanceront et qui fera l'analyse des deux rep de sauvegarde et transferera la derniere sauvegarde sur les deux pc (et dans le rèpertoire il y a plusieurs fichiers de sauvegarde car plusieurs efants..)

Donc je voudrais connaitre s'il existe une option dans "copy" qui teste les dates de crèation avant de lancer l'ordre ?
merci d'avance :D

[message édité le 24-02-2006 @ 10:36 Par TTH]
- Haut de page -
HellDuck
Vétéran
Membre # 5002

 Avatar du membre
Lieu : Paris

Messages :
4207 (0.93 par jour)


Score :

Message du 23-02-2006 @ 15:02   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

utilises la commande XCOPY ;)

xcopy /? (pour avoir tous les paramètres)
----------
www.hellduck.com
- Haut de page -
bEsTiAn
Le fauve du forum
Membre # 6846

 Avatar du membre
Lieu : Neigembos

Messages :
12413 (2.82 par jour)


Score :

Message du 22-03-2007 @ 14:27   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

je prefere robocopy a xcopy, perso!!
----------
chwi bcp trop fatigué !! (... et ca s'arrange pas avec le temps) et j'ai meme commence a perdre mes cheveux !
voyons, voyons... que me reste-t'il comme laptop... Vaio TZ31WN/B + HP 2540p + HP 8540p je pense ?
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.074 secondes