Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1266 connectés 

  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  Script dos ou pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script dos ou pas

n°2223177
chailloug
où est passé mon temps libre ?
Posté le 15-11-2005 à 10:41:28  profilanswer
 

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 !!

mood
Publicité
Posté le 15-11-2005 à 10:41:28  profilanswer
 

n°2223256
olivthill
Posté le 15-11-2005 à 11:54:56  profilanswer
 

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.

n°2223273
chailloug
où est passé mon temps libre ?
Posté le 15-11-2005 à 12:08:49  profilanswer
 

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 ?

n°2223276
boisorbe
Posté le 15-11-2005 à 12:11:03  profilanswer
 

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

n°2223299
wackevat
Posté le 15-11-2005 à 12:39:31  profilanswer
 

: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.

n°2223394
chailloug
où est passé mon temps libre ?
Posté le 15-11-2005 à 14:02:17  profilanswer
 

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 ?

n°2223435
chailloug
où est passé mon temps libre ?
Posté le 15-11-2005 à 14:33:44  profilanswer
 

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?

n°2223587
chailloug
où est passé mon temps libre ?
Posté le 15-11-2005 à 16:27:30  profilanswer
 

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 ...

n°2234035
madmartiga​n
Desperate Houseman
Posté le 25-11-2005 à 10:32:17  profilanswer
 

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...
n°2234050
chailloug
où est passé mon temps libre ?
Posté le 25-11-2005 à 10:47:14  profilanswer
 

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 ;=)))))))))))))

mood
Publicité
Posté le 25-11-2005 à 10:47:14  profilanswer
 

n°2234059
madmartiga​n
Desperate Houseman
Posté le 25-11-2005 à 10:54:44  profilanswer
 

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...
n°2234449
wackevat
Posté le 25-11-2005 à 15:43:14  profilanswer
 

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
n°2234464
chailloug
où est passé mon temps libre ?
Posté le 25-11-2005 à 15:48:50  profilanswer
 

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  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  Script dos ou pas

 

Sujets relatifs
Pb de scriptScript proxy IE : De Windows au MAC ?
script supression norton 7.6 (regedit)Idée de logiciel/script de gestion d'IP sur un réseau local/monitoring
Controler la bande passante utilisée,et execution de script[I Explorer] Problème script
Creation alias ou sous domaine via un script phpScript Windows 2003
script pour lecteur reseausurf galère IE6: "erreurs... voulez-vous effecture un script de débo..
Plus de sujets relatifs à : Script dos ou pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR