Fichier batch

Ici on parle de tout et de rien !
Répondre
muskar
Messages : 58
Enregistré le : dim. 16 janv. 2011 19:51
Etes vous un robot ? : Non
Localisation : 92

Fichier batch

Message par muskar »

Bonjour à tous,

Ma question n'ayant pas de rapport direct avec W7 je la pose ici. Si une bonne ame se souvient du dos et des fichiers batch voici mon problème.

Au boulot nous avons une application Access qui est installée sur différents postes utilisateur sur C. Cette application lancée 1 fois par jour par 1 personne, effectue différent traitement sur une base de donnée qui s'appele data.mdb. La personne avant de lancer l'application doit récupérer au préalable la dernière modification de la base qui a été sauvegardée sur S qui est sur un serveur national. Et après traitement faire une copie de C vers S afin que le lendemain la personne qui effectue le traitement travaille sur le data.mdb de la veille. En plus comme on conserve une copie de chaque traitement journalier à la fois sur C et sur S on fait une deuxième copie renommé "copie de data du jj mm aaaa.mdb".

Pour faire toutes ses manipulations ont utilise l'Explorateur de Windows Evidemment, il y en a toujours un qui oubli de faire les copies de data.mdb de C vers S ou de S vers C, ou qui oubli de renommer le fichier, ou qui se plante de dossier, etc...

Pour simplifier les choses j'ai 2 fichiers batch, l'un appelé sauvegarde.bat et l'autre restauration.bat qui effectuent les copies en renommant les fichiers. Le problème c'est que ça va si vite qu'on a pas le temps de lire dans la fenêtre de commande le résultats des copies. Si une copie ne se fait pas ça n'arrête pas le traitement et on ne sent rend pas compte. En principe il n'y a pas de raison que ça ne marche pas mais c'est arrivé une fois, je ne sais pas pourquoi. Donc, voilà enfin ma question, ouf, y a t'il un moyen de renvoyer un message d'erreur si la copie ne s'effectue pas et faire en sorte que la fenêtre de commande reste en pause dans ce cas :?:

Merci d'avance pour vos suggestions
pcor
Messages : 28
Enregistré le : sam. 27 mars 2010 12:08
Etes vous un robot ? : Non

Re: Fichier batch

Message par pcor »

spiralien
Messages : 140
Enregistré le : jeu. 30 déc. 2010 18:43
Etes vous un robot ? : Non

Re: Fichier batch

Message par spiralien »

Bonjour,
Voici un exemple d'utilisation qui devrait t'éclairer

Code : Tout sélectionner

echo off
cls
copy c:\temp\toto.txt d:\temp\
IF %ERRORLEVEL% NEQ 0 goto Erreur 
exit

:Erreur
echo une erreur de copie s'est produite
pause
Dans le batch ci-dessus, je veux copier le fichier "toto.txt" situé dans le répertoire "temp" du Disque C vers le répertoire "temp" du disque D
S'il y a une erreur lors de la copie, cela affichera le message "une erreur de copie s'est produite" et cela attendra que l'on appui sur une touche pour fermer la fenêtre.
Image

Par contre, si tout se passe bien, la fenêtre de commande se fermera automatiquement.
Image
muskar
Messages : 58
Enregistré le : dim. 16 janv. 2011 19:51
Etes vous un robot ? : Non
Localisation : 92

Re: Fichier batch

Message par muskar »

C'est tout à fait ça. je pensais bien à ERRORLEVEL mais je n'arrivais pas à le syntaxer correctement et quelqu'un m'avait dit à tort donc, que copy ne renvoyait pas d'errorlevel.

Merci beaucoup :super:

En tout cas rien ne vaut le bon vieux dos pour faciliter certaines tâches.
christophe77
Messages : 100
Enregistré le : sam. 9 janv. 2010 02:47
Etes vous un robot ? : Non

Re: Fichier batch

Message par christophe77 »

Tu peux rajouter des inscrtuction PAUSE dans le batch.
Par exemple si tu en met à la fin, la fenêtre DOS ne se referme que si tu appuie sur une touche, ça laisse le temps de faire défiler les insctructions.

Une autre astuces intéressante mais pas valable avec tout c'est de renvoyer une partie de l'écho dans un fichier texte.

Exemple :
Dir /ad (liste les directorys)
Pour récupérer le résultat dans un fichier texte tu tapes :
Dir /ad > resultat.txt

> indique de renvoyer l'écho (messages de la commande dans le fichier texte resultat.txt

Un seul > provoque le remplacement du fichier
avec >> cela rajoute au fichier texte. (exemple : Dir /ad >> resultat.txt)
Tu peux donc faire > sur la premiere commande du batch pour créer le fichier à vide au départ
et indiquer >> après pour que les autres commandes rajoutent leur echo.

Maintenant ça ne fera pas de miracles car seul l'echo de la commande est renvoyée dans le fichier et dans ce cas, on ne le voit pas à l'écran).

Exemple :
echo on
Dir c:\ /ad > resultat.txt
copy data.xxx alpha.txt >> resultat.txt
notepad resultat.txt
pause


La première commande active l'echo sur la console écran
la deuxième commande fait la liste des répertoires avec résultat dans resultat.txt (nouveau fichier)
la troisième copie un fichier (bidon ici) dans un autre avec résultat dans resultat.txt (ajouté au fichier)
la quatrième ouvre le bloc note pour afficher resultat.txt
la cinquième attend que tu appuie une touche pour fermer la commande DOS (si fenêtre DOS active)
muskar
Messages : 58
Enregistré le : dim. 16 janv. 2011 19:51
Etes vous un robot ? : Non
Localisation : 92

Re: Fichier batch

Message par muskar »

christophe77 a écrit :Tu peux rajouter des inscrtuction PAUSE dans le batch.
Par exemple si tu en met à la fin, la fenêtre DOS ne se referme que si tu appuie sur une touche, ça laisse le temps de faire défiler les insctructions.

Une autre astuces intéressante mais pas valable avec tout c'est de renvoyer une partie de l'écho dans un fichier texte.

Exemple :
Dir /ad (liste les directorys)
Pour récupérer le résultat dans un fichier texte tu tapes :
Dir /ad > resultat.txt

> indique de renvoyer l'écho (messages de la commande dans le fichier texte resultat.txt

Un seul > provoque le remplacement du fichier
avec >> cela rajoute au fichier texte. (exemple : Dir /ad >> resultat.txt)
Tu peux donc faire > sur la premiere commande du batch pour créer le fichier à vide au départ
et indiquer >> après pour que les autres commandes rajoutent leur echo.

Maintenant ça ne fera pas de miracles car seul l'echo de la commande est renvoyée dans le fichier et dans ce cas, on ne le voit pas à l'écran).

Exemple :
echo on
Dir c:\ /ad > resultat.txt
copy data.xxx alpha.txt >> resultat.txt
notepad resultat.txt
pause


La première commande active l'echo sur la console écran
la deuxième commande fait la liste des répertoires avec résultat dans resultat.txt (nouveau fichier)
la troisième copie un fichier (bidon ici) dans un autre avec résultat dans resultat.txt (ajouté au fichier)
la quatrième ouvre le bloc note pour afficher resultat.txt
la cinquième attend que tu appuie une touche pour fermer la commande DOS (si fenêtre DOS active)
Ça m'intéresse, ça doit permettre de faire un fichier log du résultat des commandes DOS.
Dès que j'ai un moment je vais faire des essais pour voir s'il est possible d'y rajouter la date pour faire un truc genre :
14/05/2011 : copie de c:\fichier.wdb vers s:\copie de fichier du 14 05 2011.wdb OK
spiralien
Messages : 140
Enregistré le : jeu. 30 déc. 2010 18:43
Etes vous un robot ? : Non

Re: Fichier batch

Message par spiralien »

muskar a écrit : Dès que j'ai un moment je vais faire des essais pour voir s'il est possible d'y rajouter la date pour faire un truc genre :
14/05/2011 : copie de c:\fichier.wdb vers s:\copie de fichier du 14 05 2011.wdb OK
Pour rajouter la date, il faut utiliser la commande Date /T ou la variable d'environnement %DATE%
Image
spiralien
Messages : 140
Enregistré le : jeu. 30 déc. 2010 18:43
Etes vous un robot ? : Non

Re: Fichier batch

Message par spiralien »

Voici un autre exemple de ce que te propose christophe77 :
Toujours Copie du fichier Toto.txt sur le disque D.
Le fichier résultat.txt est créé dans le même répertoire que le fichier batch

Code : Tout sélectionner

echo off
cls
echo -------------------------------------------------------- >./resultat.txt
echo           Lancement de la copie du fichier Toto.txt  >>./resultat.txt
echo -------------------------------------------------------- >>./resultat.txt
echo.  >>./resultat.txt
copy c:\temp\toto.txt d:\temp\ >nul
IF %ERRORLEVEL% NEQ 0 goto Erreur

:Copie-Ok
Echo %Date% : Copie du fichier Toto.txt réussie >>./resultat.txt
goto Fin

:Erreur
Echo %Date% : Une erreur s'est produite pendant la copie
Echo %Date% : Une erreur s'est produite pendant la copie >>./resultat.txt
pause

: Fin
echo.  >>./resultat.txt
echo -------------------------------------------------------->>./resultat.txt
exit 
Si la copie réussit, le fichier Resultat.txt contiendra cela :

Code : Tout sélectionner

-------------------------------------------------------- 
          Lancement de la copie du fichier Toto.txt  
-------------------------------------------------------- 
  
14/05/2011 : Copie du fichier Toto.txt réussie 
  
--------------------------------------------------------
 
Si la copie échoue, il contiendra cela :

Code : Tout sélectionner

-------------------------------------------------------- 
          Lancement de la copie du fichier Toto.txt  
-------------------------------------------------------- 
  
14/05/2011 : Une erreur s'est produite pendant la copie 
  
--------------------------------------------------------
Image
muskar
Messages : 58
Enregistré le : dim. 16 janv. 2011 19:51
Etes vous un robot ? : Non
Localisation : 92

Re: Fichier batch

Message par muskar »

Merci à tous grace à vos conseils j'ai pu faire exactement ce que je voulais. :super:

J'ai pu mettre en 1 seul batch :
- la copie de S:\data.mdb vers C:\
- le lancement de l'exécutable Access sur C:\
- la copie de C:\data.mdb vers C:\data jjjj mm aa.mdb
- la copie de C:\data.mdb vers S:\
- la copie de C:\data.mdb vers S:\data jjjj mm aa.mdb
Gérer les ERRORLEVEL avec en cas d'erreur message d'erreur et exit
Plus écrire chaque étape avec date et heure dans un fichier LOG sur S:\

Il est intéressant de noter que lorsqu'un lance un exécutable depuis un fichier batch les commandes dos suivantes dans le batch ne sont exécutées que lorsque l'application est fermée.

Un truc qui serait pas mal c'est récupérer une information d'identification de l'ordinateur de l'utilisateur pour mettre dans le LOG. J'ai vu quelques scripts qui utilisent ipconfig pour récupérer l'adresse IP, mais c'est un peu usine à gaz.

Bon dimanche à tous
spiralien
Messages : 140
Enregistré le : jeu. 30 déc. 2010 18:43
Etes vous un robot ? : Non

Re: Fichier batch

Message par spiralien »

muskar a écrit : Un truc qui serait pas mal c'est récupérer une information d'identification de l'ordinateur de l'utilisateur pour mettre dans le LOG. J'ai vu quelques scripts qui utilisent ipconfig pour récupérer l'adresse IP, mais c'est un peu usine à gaz.
Bonjour,
Pour le nom de l'utilisateur et le nom de l'ordinateur, tu peux utiliser les variables d'environnement Windows %USERNAME% et %COMPUTERNAME%
Image
Répondre