Script VBS sous linux ?

Script VBS sous linux ? - Codes et scripts - Linux et OS Alternatifs

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

Reply

Marsh Posté le 09-08-2005 à 12:51:43   

Reply

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.

Reply

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?

Reply

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
@+

Reply

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.

Reply

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.

Reply

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.

Reply

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.

Reply

Marsh Posté le 09-08-2005 à 17:24:53    

Un truc du genre :

#!/bin/sh
 
nbjt=3  # mettre le nombre de JT désirés
flag=0
 
HtmlFilePath8="France2-8.pls"   # Fichier de destination
HtmlFilePath13="France2-13.pls" # Fichier de destination
HtmlFilePath20="France2-20.pls" # Fichier de destination
 
YYYYMMDD=`date +%Y%m%d`
HOUR=`date +%H`
MYDATE=`date +%x`
 
echo "[Playlist]" > HtmlFilePath8
echo "[Playlist]" > HtmlFilePath13
echo "[Playlist]" > HtmlFilePath20
 
j=1
while [ $j -le $nbjt ]
do
         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
done


Note que j'ai juste traduit ton truc. Ca boucle a l'infini si le script est appele avant 21h.

Reply

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.

Reply

Marsh Posté le 10-08-2005 à 10:04:24   

Reply

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

Reply

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


Message édité par FOUINE95 le 10-08-2005 à 11:03:13
Reply

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?

Reply

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"
20050810


 
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.

Reply

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.

Reply

Marsh Posté le 10-08-2005 à 17:42:48    

HIER=`date --date yesterday +%Y%m%d`

[:god]

Reply

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

Reply

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"

:whistle:  
 
 
 
Que se passe-t-il si on lance ton script, disons, le premier septembre ? On te retrouve avec une date négative ? [:opus dei]
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é.
 
J'ai essayé de mettre du if/then/break mais j'm'en sors pas :)

Tester $j par rapport à $nbjt dans chaque if, et régler $flag en conséquence ?
 
 

Reply

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?

Reply

Marsh Posté le 11-08-2005 à 01:07:48    

[ $j -lt $nbjt ]
Ou -le, ou -gt, ou -ge selon ce que tu veux faire.

Reply

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 [:totoz] [:dawao]  
 
 
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 [:god]. Et on pourrait continuer à boucler et écrire les urls des journeaux du -1 Septembre, du -2 Septembre, etc [:god]
 
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 ( [:dawao] ) à 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.

Reply

Marsh Posté le 11-08-2005 à 16:19:19    

Je valide :) t'as raison. Faut que je me penche sur le probleme.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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