Script dos ou pas

Script dos ou pas - Win NT/2K/XP - Windows & Software

Marsh Posté le 15-11-2005 à 10:41:28    

Bonjour, je vais essayer d'être le plus clair et précis possible, mais c'est pas gagné ...
 
Voilà, je dois faire un script qui doit me lancer une ligne de commandes avec des dates dans le paramétrages. je pensais donc faire un script en batch, mais je galère grave. je m'aide des sujets http://forum.hardware.fr/hardwaref [...] 6671-1.htm et http://forum.hardware.fr/forum2.ph [...] owntopic=1 mais çà ne résoud qu'une partie ( petite en plus) de mon problème.
 
Bon je vous explique ce que veut faire :
 
Je veut lancer un script quotidien (et donc automatique) qui me fasse c:\%ma commande% 200511090000 200511140000 >log20051114.txt
 
mon problème est de crée les 2 variables 200511090000 et 200511140000. ces deux variables sont du type AAAAMMJJHHMMSS et  AAAAMMJJ+1HHMMSS. A la limite, comme je fait des analyses de 00h00 à 00h00 le ledndemain, je ppeut mettre les derniers 0000 en dur dans le script, voir même je peut  mettre le 2005 au début ( je changerais le script une fois par an c'est pas bien méchant).
 
Voilà pour durcir le tout je veut faire ce script sur un windows 2000 serveur en français, et actuellement j'ai juste réussi à créer une variable qui me donne %date2%=jjmmaa et non aammjj. Voila voilou, bon évidemment il y aura aussi le rpoblème de changement de mois à gérer ....
 
Bref pour en revenir au titre, plus ça avance plus je me dis que ça va être impossible à faire en batch dos (avis aux professionel des batchs, si vous arrivez à me faire quelquechose je vous applaudis debout sur mon bureau en criant votre nom ;-)))), et mon problème c'est que c'est le seul language de script que je conaisse. Si queqlu'un connait d'autre langages de script facile et gratuit pour des opérations un peut plus complexes, je suis preneur (surtout avec de l'aide pour mon problème actuel :=))
 
Merci pour ceu qui on eu le courrage de lire ce post jusqu'au bout !!

Reply

Marsh Posté le 15-11-2005 à 10:41:28   

Reply

Marsh Posté le 15-11-2005 à 11:54:56    

Une alternative aux BAT est le VBS.
VBS est un langage Basic de Microsoft disponible de base sur toutes les versions de Windows depuis windows 95.
 
Un programme VBS est créé comme un programme BAT, en écrivant des lignes de code dans un fichier à l'aide d'un éditeur de texte.
 
Un programme VBS se lance, soit, à partir de Windows Explorer, en cliquant dessus, soit, à partir d'une fenêtre de commande, en tapant

cscript.exe mon_prog.vbs

.
 
Les scripts VBS permettent de faire beaucoup plus de choses que les BAT, et souvent de manière plus simple. Voir la doc http://www.microsoft.com/technet/s [...] fault.mspx
 
Voici un script VBS pour répondre à la question :

Code :
  1. date_ref1 = Now
  2. date1 = DatePart("yyyy" , date_ref1) _
  3. & Right("00" & DatePart("m", date_ref1), 2) _
  4. & Right("00" & DatePart("d", date_ref1), 2) _
  5. & Right("00" & DatePart("h", date_ref1), 2) _
  6. & Right("00" & DatePart("n", date_ref1), 2) _
  7. & Right("00" & DatePart("s", date_ref1), 2)
  8. 'Wscript.Echo date1
  9. log_date1 = "log" & date1 & ".txt"
  10. 'Wscript.Echo "Weekday: " & DatePart("w" , Now)
  11. If (DatePart("w", date_ref1) = 6) Then
  12.    date_ref2 = date_ref1 + 3 ' saute samedi, dimanche
  13. Else
  14.    date_ref2 = date_ref1 + 1
  15. End If
  16. date2 = DatePart("yyyy" , date_ref2) _
  17. & Right("00" & DatePart("m", date_ref2), 2) _
  18. & Right("00" & DatePart("d", date_ref2), 2) _
  19. & Right("00" & DatePart("h", date_ref2), 2) _
  20. & Right("00" & DatePart("n", date_ref2), 2) _
  21. & Right("00" & DatePart("s", date_ref2), 2)
  22. 'Wscript.Echo date2
  23. Set objShell = Wscript.CreateObject("Wscript.Shell" )
  24. objShell.Run "cmd.exe /c toto.bat " & date1 & " " & date2 & " >" & log_date1

Une apostrophe en début de ligne sert à un indiquer un commentaire. Donc, dans un premier temps, tu peux tester en enlevant les aspostrophes des lignes wscript.echo afin de voir le contenu des variables, et en mettant une apostrophe devant la ligne objShell.run pour ne pas lancer le programme complémentaire.

Reply

Marsh Posté le 15-11-2005 à 12:08:49    

Waouhh !!!! pile poil. bon il me reste à étudier tout çà ...
 
Je faisait des recherches de mon coté et je suis tombé sur Microsoft WSH. Wsh est dinc un interpréteur de script VBScript et javascript.
 
Je n'y connais rien au 2 que me conseiller vous ? Vbscript ou javascript ? Quels sera le plus cimple à s'autoformer ? quels sites sont les mieux pour les débutants ?

Reply

Marsh Posté le 15-11-2005 à 12:11:03    

le vbs est vraiment de toute beaute. C'est effectivement l'arme a utiliser sous windows.
en batch je ne sais pas comment on peut additionner des dates, c'est donc plus lourd
 
on peut bien sur faire un :

Code :
  1. @echo off
  2. rem seule la ligne suivante est utile pour definir la variable le reste est la pour afficher
  3. for /f "tokens=2-4 delims=/ " %%a in ("%date%" ) do set vardate=%%c%%b%%a
  4. echo %vardate%
  5. pause


 
mais ca repond pas au problème.
Par contre le script vbs est magnifique :D

Reply

Marsh Posté le 15-11-2005 à 12:39:31    

:hello:
 
En batch c'est beaucoup moins joli et moins pratique mais tout à fait possible. Dans la sous-cat Shell/Batch il y a un topic dans le genre (recherche des fichiers datant de plus de 30 jours). Le script proposé n'est pas finalisé mais c'est un bon début.

Reply

Marsh Posté le 15-11-2005 à 14:02:17    

j'ai réétudié le batch de maître olivthill, et j'aurais aimé savoir une chose ou 2. Voilà mon problème, il faut que pour la ligne de commande que je veux automatiser, il y ait plusieurs variables d'environnement que j'ai créé. je ne veut pas modifier mon config.nt. hors le problème avec le vbs ci dessus c'est qu'avec cette ligne objShell.Run "cmd.exe /c toto.bat " & date1 & " " & date2 & " >" & log_date1  il me lance une nouvelle instance de l'interpréteur de commande (donc sans mes variables d'environnement). donc les questions suivantes se posent :
 
- comment lancer la ligne de commande dans un interpréteur déjà ouvert (et donc bien paramétré)
 
ou
 
- comment définir des variables d'environement DOS dans un vbs ?

Reply

Marsh Posté le 15-11-2005 à 14:33:44    

désolé d'abusé;  
je me suis résolu a changé mon config.nt pour rajouter mes variables d'environnement.
j'ai modifié le script de la sorte :
date_ref1 = Now  
 
Wscript.Echo date_ref1  
 
date1 = DatePart("yyyy" , date_ref1) _  
& Right("00" & DatePart("m", date_ref1), 2) _  
& Right("00" & DatePart("d", date_ref1), 2) _  
& Right("00" & DatePart("h", date_ref1), 2) _  
& Right("00" & DatePart("n", date_ref1), 2) _  
& Right("00" & DatePart("s", date_ref1), 2)  
Wscript.Echo date1  
 
log_date1 = "d:\log" & date1 & ".txt"  
Wscript.Echo log_date1
 
Wscript.Echo "Weekday: " & DatePart("w" , Now)  
If (DatePart("w", date_ref1) = 6) Then  
   date_ref2 = date_ref1 + 3 ' saute samedi, dimanche  
Else  
   date_ref2 = date_ref1 - 1  
End If  
date2 = DatePart("yyyy" , date_ref2) _  
& Right("00" & DatePart("m", date_ref2), 2) _  
& Right("00" & DatePart("d", date_ref2), 2) _  
& Right("00" & DatePart("h", date_ref2), 2) _  
& Right("00" & DatePart("n", date_ref2), 2) _  
& Right("00" & DatePart("s", date_ref2), 2)  
Wscript.Echo date2  
 
Set objShell = Wscript.CreateObject("Wscript.Shell" )  
objShell.Run "cmd.exe d:\tina\bin\tina_event -v_log_date -f_severity alarm_critical alarm_major alarm_minor -f_log_date" & date1 & " " &  
 
date2 & " >" & log_date1  
 
mais quand je le lenace rien ne se passe ?! que puis-je faire?

Reply

Marsh Posté le 15-11-2005 à 16:27:30    

problème résolue, il me manquait un espace après cmd.exe d:\tina\bin\tina_event -v_log_date -f_severity alarm_critical alarm_major alarm_minor -f_log_date
 
--> ma commande plantait et me renvoyait une ligne vide ...

Reply

Marsh Posté le 25-11-2005 à 10:32:17    

Ca marche aussi en Batch !
 

Citation :

FOR /F "tokens=2,3,4 delims=/ " %%I in ("%date%" ) DO CALL :VARGEN_DATE %%I %%J %%K
FOR /F "tokens=1,2,3 delims=:. " %%I in ("%time%" ) DO CALL :VARGEN_TIME %%I %%J %%K
 
goto FIN
 
:VARGEN_DATE
SET Jour=%2
SET Mois=%1
SET ANNEE=%3
GOTO :EOF
 
:VARGEN_TIME
SET Heure=%1
SET Minute=%2
SET Seconde=%3
GOTO :EOF
 
:FIN
@ECHO Jour %Jour% Mois %Mois% Annee %Annee% Heure %Heure% Minute %Minute% Seconde %Seconde%
SET /A Jour1=%Jour%+1
@ECHO Jour %Jour1% Mois %Mois% Annee %Annee% Heure %Heure% Minute %Minute% Seconde %Seconde%
 
@ECHO 'MACOMMANDE' %ANNEE%%Mois%%Jour%%Heure%%Minute%%Seconde% %ANNEE%%Mois%%Jour1%%Heure%%Minute%%Seconde%



 
Voila, je bosse sur une machine en 2000 English, donc l'ordre Mois et Jour change, tu n'as qu'a permuter les valeurs si nécessaire.
 
Si ça répond à ta question, je veux qu'on te filme à danser sur le bureau en criant mon nom, et que tu postes la video ici même   :D


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Marsh Posté le 25-11-2005 à 10:47:14    

pas de chance, j'ai pas de caméscope sous la main. Par contre je viens de tuer mon voisin de bureau, il a fait une crise cardiaque quand j'ai sauté sur mon bureau !!!
 
tiens d'ailleurs j'entend la police qui vient me chercher pour ce meutre, sinf ;=)))))))))))))

Reply

Marsh Posté le 25-11-2005 à 10:47:14   

Reply

Marsh Posté le 25-11-2005 à 10:54:44    

chailloug a écrit :

pas de chance, j'ai pas de caméscope sous la main. Par contre je viens de tuer mon voisin de bureau, il a fait une crise cardiaque quand j'ai sauté sur mon bureau !!!
 
tiens d'ailleurs j'entend la police qui vient me chercher pour ce meutre, sinf ;=)))))))))))))


 
J'espère que je ne vais pas tomber pour complicité d'hommicide involontaire par impudence   :D  
 
Content que tu soit content  :jap:


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Marsh Posté le 25-11-2005 à 15:43:14    

madmartigan a écrit :


SET /A Jour1=%Jour%+1




Attention quand tu es à la fin du mois ;)


Message édité par wackevat le 25-11-2005 à 15:43:34
Reply

Marsh Posté le 25-11-2005 à 15:48:50    

et oui c'est pour ça que je me suis décider pour faire la version vbscript, c'est quand même plus puissant. par contre faut ce motiver pour s'y mettre quand on est pas programmeur pour un sous.
 
Pour les curieux voiçi le vbscript une fois modifié et implémenter
 
date_ref1 = Now  
 
'Wscript.Echo date_ref1  
 
date1 = DatePart("yyyy" , date_ref1) _  
& Right("00" & DatePart("m", date_ref1), 2) _  
& Right("00" & DatePart("d", date_ref1), 2) _  
& Right("07", 2) _  
& Right("30", 2)
'Wscript.Echo date1  
 
log_date1 = "d:\log_tina\log" & date1 & ".doc"  
'Wscript.Echo log_date1
 
'Wscript.Echo "Weekday: " & DatePart("w" , Now)  
If (DatePart("w", date_ref1) = 2) Then  
   date_ref2 = date_ref1 - 3 ' le lundi, fait un log du vendredi soir au lundi les sauvegardes complête durant plusieurs jours  
Else  
   date_ref2 = date_ref1 - 1  
End If  
date2 = DatePart("yyyy" , date_ref2) _  
& Right("00" & DatePart("m", date_ref2), 2) _  
& Right("00" & DatePart("d", date_ref2), 2) _  
& Right("21", 2) _  
& Right("00", 2)  
'Wscript.Echo date2  
 
Set objShell = Wscript.CreateObject("Wscript.Shell" )  
objShell.Run "cmd.exe /c d:\tina\bin\tina_event -v_host -f_severity alarm_critical alarm_major alarm_minor -f_log_date " & date2 & " " & date1 & " >" & log_date1  
 
i=1
For i = 1 to 10000000
     i=i+1
Next
 
Set wShell = CreateObject("Wscript.Shell" )  
 
wShell.Run "%windir%\wordpad\wordpad.exe /p " & log_date1, 0
 
'objShell.Run "cmd.exe /c %windir%\wordpad\wordpad.exe /p " & log_date1  
 
 
 
Set wShell = Nothing  

Reply

Sujets relatifs:

Leave a Replay

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