Script dos ou pas - Win NT/2K/XP - Windows & Software
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 :
|
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.
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 ?
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 :
|
mais ca repond pas au problème.
Par contre le script vbs est magnifique
Marsh Posté le 15-11-2005 à 12:39:31
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.
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 ?
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?
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 ...
Marsh Posté le 25-11-2005 à 10:32:17
Ca marche aussi en Batch !
Citation :
|
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
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 ;=)))))))))))))
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 !!! |
J'espère que je ne vais pas tomber pour complicité d'hommicide involontaire par impudence
Content que tu soit content
Marsh Posté le 25-11-2005 à 15:43:14
madmartigan a écrit :
|
Attention quand tu es à la fin du mois
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
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 !!