Script VBS sous linux ? - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 09-08-2005 à 12:54:38
les vbscript est une techno propriétaire de M$. Je doute qu'il existe un interpréteur vbscript sous Linux.
Marsh Posté le 09-08-2005 à 13:04:52
ou un convertisseur? ou un language similaire? ou une ame charitable qui voudrai refondre mon script? ou m'aider a le faire?
Marsh Posté le 09-08-2005 à 13:07:32
Oui bien sûr, il existe le python qui est un très beau langage simple à comprendre et multiplateformes.
Plus d'infos sur le partie Programmation du forum
@+
Marsh Posté le 09-08-2005 à 13:07:35
Comme langages, t'as le choix :
Bash
CSH
Perl
Python
Et j'en oublie surement pas mal.
Marsh Posté le 09-08-2005 à 13:08:25
Déjà que fait ton script ?
sinon tu peux programmer en Perl, il est disponible sur les 2 plateformes.
Marsh Posté le 09-08-2005 à 13:21:37
Mon script, c'est ca :
'********************************************************************
nbjt = 3 ' mettre le nombre de JT désirés
HtmlFilePath8 = "France2-8.pls" ' Fichier de destination
HtmlFilePath13 = "France2-13.pls" ' Fichier de destination
HtmlFilePath20 = "France2-20.pls" ' Fichier de destination
'********************************************************************
Dim MyDate, MyDateRes, Jour, Mois, YYYYMMDD, Heure
Heure = Hour(Now)
j = 1
Flag = 0
Set FSO_my8 = CreateObject("Scripting.FileSystemObject" )
Set MyFile8 = FSO_my8.CreateTextFile(HtmlFilePath8)
Set FSO_my13 = CreateObject("Scripting.FileSystemObject" )
Set MyFile13 = FSO_my13.CreateTextFile(HtmlFilePath13)
Set FSO_my20 = CreateObject("Scripting.FileSystemObject" )
Set MyFile20 = FSO_my20.CreateTextFile(HtmlFilePath20)
MyDate = Date
MyFile8.WriteLine("[Playlist]" )
MyFile13.WriteLine("[Playlist]" )
MyFile20.WriteLine("[Playlist]" )
'Début de la boucle
Do
'génération de la date au format YYYYMMDD
If Day(MyDate) < 10 Then
Jour = "0"&Day(MyDate)
Else Jour = Day(MyDate)
End If
If Month(MyDate) < 10 Then
Mois = "0"&Month(MyDate)
Else Mois = Month(MyDate)
End If
YYYYMMDD = Year(MyDate)&Mois&Jour
'Création du fichier PLS + URLs
'JT de 20H
If Heure > 20 OR Flag > 0 Then
MyFile20.WriteLine("numberofentries="&nbjt&"" )
MyFile20.WriteLine("File"&j&"=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/infos/f2/20h/HD_20h_"&YYYYMMDD&".wmv" )
MyFile20.WriteLine("Title"&j&"=France 2 (20h) du : "&MyDate)
MyFile20.WriteLine("Length"&j&"=-1" )
MyFile20.WriteLine("Version=2" )
j = j + 1
If j > nbjt Then Exit Do
End If
Il permet de recomposer l'URL des JT de France2.
Marsh Posté le 09-08-2005 à 13:26:19
Bon ça s'annonce bien, ton script ne fait pas appel à des fonctions spécifique à Windows.
Il ne fait qu'ouvrir des fichiers textes pour les modifier par la suite.
Donc au choix :
Perl, PHP et ça doit même être possible de le faire en sh.
Marsh Posté le 09-08-2005 à 17:24:53
Un truc du genre :
#!/bin/sh |
Note que j'ai juste traduit ton truc. Ca boucle a l'infini si le script est appele avant 21h.
Marsh Posté le 10-08-2005 à 10:04:24
Cool merci pour ton travail
Je test ca ce soir !!
PS : pour la boucle, en fait je n'ai pas copier/coller l'integralié du script car la fin est un copier/coller du bloc de 20h.
Marsh Posté le 10-08-2005 à 10:39:45
A la fin j'ai ca :
'JT de 8H
If Heure > 8 OR Flag > 0 Then
MyFile8.WriteLine("numberofentries="&nbjt&"" )
MyFile8.WriteLine("File"&j&"=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/infos/f2/8h/HD_8h_"&YYYYMMDD&".wmv" )
MyFile8.WriteLine("Title"&j&"=France 2 (8h) du : "&MyDate)
MyFile8.WriteLine("Length"&j&"=-1" )
MyFile8.WriteLine("Version=2" )
j = j + 1
If j > nbjt Then Exit Do
End If
MyDate = MyDate - 1
Flag = 1
Loop
MyFile8.Close
MyFile13.Close
MyFile20.Close
Marsh Posté le 10-08-2005 à 10:58:56
Re!
Bon j'ai completé le script sur le meme principe que ton aide precieuse
#!/bin/sh
#Parametrage du nombre de JT
nbjt=3 # mettre le nombre de JT désirés
flag=0
j=1
HtmlFilePath8="France2-8.pls" # Fichier de destination
HtmlFilePath13="France2-13.pls" # Fichier de destination
HtmlFilePath20="France2-20.pls" # Fichier de destination
echo "[Playlist]" > HtmlFilePath8
echo "[Playlist]" > HtmlFilePath13
echo "[Playlist]" > HtmlFilePath20
# Génération de la date
YYYYMMDD=`date +%Y%m%d`
HOUR=`date +%H`
MYDATE=`date +%x`
#Début de la boucle
while [ $j -le $nbjt ]
do
#JT de 20H
if [ $HOUR -gt 20 ] || [ $flag -gt 0 ]
then
echo "numberofentries=$nbjt" >> HtmlFilePath20
echo
"File$j=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/infos/f2/20h/HD_20h_$YYYYMMDD.wmv" >> HtmlFilePath20
echo "Title$j=France 2 (20h) du : $MYDATE" >> HtmlFilePath20
echo "Length$j=-1" >> HtmlFilePath20
echo "Version=2" >> HtmlFilePath20
(( j += 1 ))
fi
#JT de 13H
if [ $HOUR -gt 13 ] || [ $flag -gt 0 ]
then
echo "numberofentries=$nbjt" >> HtmlFilePath13
echo
"File$j=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/infos/f2/13h/HD_13h_$YYYYMMDD.wmv" >> HtmlFilePath13
echo "Title$j=France 2 (13h) du : $MYDATE" >> HtmlFilePath13
echo "Length$j=-1" >> HtmlFilePath13
echo "Version=2" >> HtmlFilePath13
(( j += 1 ))
fi
#JT de 8H
if [ $HOUR -gt 8 ] || [ $flag -gt 0 ]
then
echo "numberofentries=$nbjt" >> HtmlFilePath8
echo
"File$j=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/infos/f2/8h/HD_8h_$YYYYMMDD.wmv" >> HtmlFilePath8
echo "Title$j=France 2 (8h) du : $MYDATE" >> HtmlFilePath8
echo "Length$j=-1" >> HtmlFilePath8
echo "Version=2" >> HtmlFilePath8
(( j += 1 ))
fi
((Mydate -=1))
Flag=1
done
J'me suis pas planté vers la fin? je ne pourrai le tester que ce soir@home...
Marsh Posté le 10-08-2005 à 14:08:28
Bon, je viens de tester le script :
Faut bien faire gaffe au majuscule/minuscule
Donc j'ai corrigé mon "Flag" de fin en "flag", j'ai fait la meme chose pour "Mydate" en "MYDATE".
Par contre la j'ai un probleme. En effet j'ai besoin de prendre la date du jour (aujourd'hui, le 10) et de lui decompter 1. MYDATE -=1 ne fonctionne pas.
Un affichage de la valeur de MYDATE me retourne : 10.08.2005
((MYDATE -=1)) ne me donne aps 09.08.2005
Une astuce?
Marsh Posté le 10-08-2005 à 16:57:26
Essaye d'utiliser la date au format AAAAMMJJ, par exemple, pour le 10/08/2005 :
$ date +"%Y%m%d" |
et ensuite :
VARIABLE=`expr $ancienne_date - 1`
ou VARIABLE est la variable qui va recevoir la nouvelle date, et ancienne_date est la date à décrémenter.
Fais attention aux " ` ", il faut utilisé le guillement se trouvant sur la touche 7 avec alt+gr.
Marsh Posté le 10-08-2005 à 17:25:32
Merci pour ta reponse; en fait j'ai decoupé la date en 3 variables et ca marche bien.
Marsh Posté le 10-08-2005 à 20:06:55
je te souhaite du courage pour decompter sur 3 ou 4 jours en arriere .
je remets le script ou il est est de sa conversion :
#!/bin/sh
#Parametrage du nombre de JT
nbjt=3 # mettre le nombre de JT désirés
flag=0
j=1
HtmlFilePath8="France2-8.pls" # Fichier de destination
HtmlFilePath13="France2-13.pls" # Fichier de destination
HtmlFilePath20="France2-20.pls" # Fichier de destination
echo "[Playlist]" > HtmlFilePath8
echo "[Playlist]" > HtmlFilePath13
echo "[Playlist]" > HtmlFilePath20
# Génération de la date
YYYYMMDD=`date +%Y%m%d`
HOUR=`date +%H`
JOUR=`date +%d`
MOIS=`date +%m`
AN=`date +%Y`
#Début de la boucle
while [ $j -le $nbjt ]
do
#JT de 20H
if [ $HOUR -gt 20 -o $flag -gt 0 ]
then
echo "numberofentries=$nbjt" >> HtmlFilePath20
echo "File$j=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/inf
os/f2/20h/HD_20h_$YYYYMMDD.wmv" >> HtmlFilePath20
echo "Title$j=France 2 (20h) du : $JOUR.$MOIS.$AN" >> HtmlFilePath20
echo "Length$j=-1" >> HtmlFilePath20
echo "Version=2" >> HtmlFilePath20
(( j += 1 ))
fi
#JT de 13H
if [ $HOUR -gt 13 -o $flag -gt 0 ]
then
echo "numberofentries=$nbjt" >> HtmlFilePath13
echo "File$j=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/inf
os/f2/13h/HD_13h_$YYYYMMDD.wmv" >> HtmlFilePath13
echo "Title$j=France 2 (13h) du : $JOUR.$MOIS.$AN" >> HtmlFilePath13
echo "Length$j=-1" >> HtmlFilePath13
echo "Version=2" >> HtmlFilePath13
(( j += 1 ))
fi
#JT de 8H
if [ $HOUR -gt 8 -o $flag -gt 0 ]
then
echo "numberofentries=$nbjt" >> HtmlFilePath8
echo "File$j=mms://a988.v101995.c10199.e.vm.akamaistream.net/7/988/10199/3f97c7e6/ftvigrp.download.akamai.com/10199/horsgv/regions/siege/inf
os/f2/8h/HD_8h_$YYYYMMDD.wmv" >> HtmlFilePath8
echo "Title$j=France 2 (8h) du : $JOUR.$MOIS.$AN" >> HtmlFilePath8
echo "Length$j=-1" >> HtmlFilePath8
echo "Version=2" >> HtmlFilePath8
(( j += 1 ))
fi
((JOUR -= 1))
flag=1
done
Il me reste un probleme. La condition $j -gt $nbjt n'est verifié qu'au debut de la boucle. Si j=nbjt pendant la boucle alors la boucle n'est pas brisé.
J'ai essayé de mettre du if/then/break mais j'm'en sors pas
Marsh Posté le 10-08-2005 à 20:35:18
FOUINE95 a écrit : je te souhaite du courage pour decompter sur 3 ou 4 jours en arriere . |
date --date "3 days ago" |
Que se passe-t-il si on lance ton script, disons, le premier septembre ? On te retrouve avec une date négative ?
Et c'est normal que l'url soit la même quel que soit la date du journal que l'on veut ?
Citation : Il me reste un probleme. La condition $j -gt $nbjt n'est verifié qu'au debut de la boucle. Si j=nbjt pendant la boucle alors la boucle n'est pas brisé. |
Tester $j par rapport à $nbjt dans chaque if, et régler $flag en conséquence ?
Marsh Posté le 11-08-2005 à 01:04:25
Oui, j'ai oublié de modifier la date de l'URL
Pour la date le pense que si on est le premier, ca repassera au 31 ou au 30 vu que c'est la fonction DATE qui est appelé.
Pour tester $j par rapport à $nbjt, tu ferais comment?
Marsh Posté le 11-08-2005 à 01:07:48
[ $j -lt $nbjt ]
Ou -le, ou -gt, ou -ge selon ce que tu veux faire.
Marsh Posté le 11-08-2005 à 02:35:08
FOUINE95 a écrit : Pour la date le pense que si on est le premier, ca repassera au 31 ou au 30 vu que c'est la fonction DATE qui est appelé. |
Tazifiant
date n'est appellé qu'au début du script. Si tu lances ton script, disons, le premier septembre à 15H, YYYYMMDD vaudra 20050901. JOUR vaudra 01. N'est ce pas ? On s'occupe des journaux de 8 et 13H, tout va bien. Et là, on décrémente JOUR. Qui vaut donc 00. Et on boucle, en écrivant l'url des journeaux du 0 Septembre 2005 . Et on pourrait continuer à boucler et écrire les urls des journeaux du -1 Septembre, du -2 Septembre, etc
Il faut donc rappeller date à chaque itération, avec --date="x days ago", où x vaut tour à tour 0, 1, 2, 3, etc... Donc au lieu de décrémenter JOUR, il te faudra incrémenter une variable.
Tu peux peut être faire attention au bug qui se produit si on change de jour au cours de l'éxecution du script (par exemple, si on lance le script à 23H59 et 59 secondes, et que l'on assigne une valeur élevée à nbjt, on obtiendra probablement des journeaux en double...).
Citation : Pour tester $j par rapport à $nbjt, tu ferais comment? |
C'est comme tu veux. Tu pourrais mettre HOUR à -42 ( ) à la fin de la première itération, puis ajouter quelque chose comme ça à la fin des deux premiers if (après l'incrémentation de j):
if [ $j -gt $nbjt ]; then flag=0; fi |
Ou un break à la place du flag=0 si tu préfères.
Marsh Posté le 11-08-2005 à 16:19:19
Je valide t'as raison. Faut que je me penche sur le probleme.
Marsh Posté le 09-08-2005 à 12:51:43
Hello!
Apres avoir posé la question dans le TOPIC dédié a la programmation, on m'a conseillé de venir poser ma question ici.
J'ai un script VBS d'une centaine de ligne que j'executai sous wndows. Aujourd'hui je souhaiterai pouvoir l'executer sous linux (Debian 3.1).
Comment faire? un simple ./script.vbs ne suffit pas apparement
Merci