Questions et Réponses Batch, Scripts, ligne de commande | |
Q001 : Quel éditeurs pour mes scripts [11/2007]
Q002 : Générer un fichier daté [11/2007]
Q003 : Sauvegarder l'état du système [11/2007]
Q004 : Utiliser une liste
[01/2008]
Q099 : Fini pour le moment ?
Fiches orientées Scripting
O08 : Création de nouveaux Utilisateurs
[10/2007]
O09 : Un exemple de Script de backup
O13 : Que se passe t'il dans mon script, présentation des mécanismes de trace
[10/2007]
Q1 : Quel éditeurs pour mes scriptsmise à jours le 02/11/2007 |
Pour créer un script, il n'est pas nécessaire d'avoir un outil bien compliqué, la ligne de commande peut suffire :
Copy con monscript.cmd
Echo Voila mon Script
CTRL+Z

Et voila un petit script créé pour l'occasion. Pour l'éditer facilement s'il n'est pas trop important, "Edit" existe toujours même sur les plus récents systèmes.

Voila pour les situations d'Urgence quand on ne veux pas installer d'outils pour se faciliter la vie.
Après dans les situation courantes, on a intérêt à avoir un outil plus performant qui permet une édition efficace des scripts. C'est principalement un affaire de goût mais si vous cherchez quelques outils en voici quelques uns pour commencer :
Q2 : Générer un fichier datémise à jours le 02/11/2007 |
J'ai l'habitude de faire en sorte que mes scripts génèrent le plus souvent possible une trace de ce qui a été fait.
Comme la trace du dernier évènement n'est pas toujours suffisamment parlante ou suffisante, j'ai pris l'habitude de générer des fichiers de trace datés style :
C'est la trace d'un mailling qui a été envoyé le 21 mail 2007 (2007 05 21).
Comment obtenir l'information qui permet de dater le fichier dans un script BATCH, voila ma recette (même si vous en trouverez bien d'autres sur le net).
Voici la première version :
Rem Calcul de la chaine DATE AAAAMMJJ
set D=%DATE:/=%
set D=%D:~4,4%%D:~2,2%%D:~0,2%
Echo %D%
Très satisfaisante sur mon XP ou sur mes serveurs 2003, elle s'est révélée inadaptée sur les "vieux" serveurs 2000 parce que la commande date ne renvoie pas la date de la même façon ("lun 19/09/2006"). Donc voici la "formule" qui marche sur les XP/2003/2000 :
Rem Calcul de la chaine DATE AAAAMMJJ
set WD=%DATE:/=%
if "%WD:~4,1%"=="2" (
set D=%WD:~4,4%%WD:~2,2%%WD:~0,2%
set SNAPON=/snap:on
) ELSE set D=%WD:~9,4%%WD:~7,2%%WD:~5,2%
Echo %D%
Q3 : Sauvegarder l'état du systèmemise à jours le 02/11/2007 |
Même avec l'apparition des points de restauration sous XP, j'ai pris l'habitude de faire une sauvegarde de l'état du système d'une station ou d'un serveur avant de faire une opération de mise à jours ou d'installation de logiciels.
C'est un opération facile à faire à partir de NTBACKP :Lancer NTBACKUP (éviter l'assistant), passer dans l'onglet [Sauvegarder], Cocher System State, et choisir la destination et voila :

L'autre solution qui permet aussi de planifier l'action ou de la lancer automatique sans se poser de question sur le nom du fichier, sa localisation consiste à écrire un petit script pour faire cette action.
Le script à télécharger effectue en plus du backup l'envoie d'un mail, la notification à un serveur syslog [Mettre en place un serveur SYslog Fiche-14] et la sauvegarde sur un serveur de centralisation.
@Title Sauvegarde de l'Etat du Système
@rem +----------------------------------------------------------+
@rem + Sauvegarde de l'Etat du système +
@rem + Francois Dunoyer +
@rem + cree : 06/12/2005 +
@rem + Modif : 02/11/2007 +
@rem +----------------------------------------------------------+
:: valeurs par defaut si non configurées
if "%SMTPS%"=="" Set SMTPS=smtp.Mondomaine.local
Set Ext=bkf
:: Par défaut définition du PC de centralisation des Sauvegardes
Set Cible=\\Poste_104
set Dossier=d$\sauvegardes\ES
:: Dans le calcul de la date, on détecte si le système est un Windows 2000 qui ne gère pas l'option cliché instantanée
:: Et on position une variable qui ajoutera cette option dans le cas des Windows 2003 ou plusRem Calcul de la chaine DATE AAAAMMJJ
set WD=%DATE:/=%
if "%WD:~4,1%"=="2" (
set D=%WD:~4,4%%WD:~2,2%%WD:~0,2%
set SNAPON=/snap:on
) ELSE set D=%WD:~9,4%%WD:~7,2%%WD:~5,2%
Set Message=%Action%
now %Message% >%LogBrief%:: Voila le coeur du script, la backup de l'état du systeme
Set BackupName=%Cible%\%dossier%\%ComputerName%-ES-%D%.%Ext%
echo %Backupname%
pause
ntbackup.exe backup systemstate /n "Etat du systeme pour %ComputerName% au %DATE%" /d "ES-%ComputerName%-%D%" /F "%BackupName%" /v:no /r:no /rs:no /hc:off /m normal /j "ES-%ComputerName%-%D%" /l:f %SNAPON%
:: La c'est fini
Script complet à télécharger : ![]()
Q4 : Utiliser une "liste"mise à jours le 22/01/2008 |
Comme utiliser un semblant de liste pour répéter un traitement dans une fichier de commande.
@Title Parcour d'une liste
@rem +----------------------------------------------------------+
@rem + Utilisation d'une liste
@rem + Francois Dunoyer
@rem + cree : 22/01/2008
@rem + Modif : 22/01/2008
@rem +----------------------------------------------------------+:: Création d'une variable
set filelist=Valeur1 Valeur2 Valeur3 Valeur4 Valeur5
set filelist=%filelist% valeur06 valeur07 Valeur08 Valeur09 valeur10
set filelist=%filelist% valeur16 valeur17 Valeur18 Valeur19 valeur20
:: Exploitation de la variable
for %%i in (%filelist%) do (
echo traitement %%i ...
traitement %%i
)
:: La c'est finiecho.
Echo Voila c'est fini .....
Q99 : Fini ? |
Pour le moment.
Copyright ©1997-2008,
François Dunoyer, Dernière modification le
Recommander cette page