Le quel faut-il choisir ?
Avantages/Inconvénients ?
Merci
Version imprimable
Le quel faut-il choisir ?
Avantages/Inconvénients ?
Merci
salut,
- Côté puissance: le moteur Wscript.exe/Cscript.exe est plus puissant que l'interpréteur Cmd.exe, mais parfois on est confronté devant des cas ou une seule ligne de code Batch est amplment suffisante devant une diziane de lignes de code VBS ou même "PERL".
Mais VBS ça reste VBS, un langage de script qui t'apporteras un plus côté lisibilité du code, puissance,..etc
- côté codage: On peux combiner entre ces 2 langages de script en utilisant bu Batch hybride, pour exploiter la puissance du VBS:
exemple: (hybrid.bat)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 @ECHO OFF & SETLOCAL ::::::::::::::::::::::::::::::::::::::::::::::::::::::: : QUAND: 26/10/2009 : QUOI: utilitaire multitâche : QUI: WALID (I'm_HERE) ::::::::::::::::::::::::::::::::::::::::::::::::::::::: ECHO/%*|FINDSTR /RVC:"-[heldurDacoMs] .*">NUL && ( CLS ECHO. ECHO %~nx0 [Args] ECHO. ECHO Args: -d [-^|+]day -^> %~n0 -d +3 ECHO -a str_length -^> %~n0 -a test string ECHO -e exp_num -^> %~n0 -e 6/2.5 ECHO -u UpperCase -^> %~n0 -u abc ECHO -l LowerCase -^> %~n0 -l ABC ECHO -r reverse -^> %~n0 -r abc ECHO -h dec2hexa -^> %~n0 -h 425 ECHO -o dec2oct -^> %~n0 -o 8 ECHO -c ansi_char -^> %~n0 -c 37 ECHO -M [0^|1]MonthName -^> %~n0 -M 1 ECHO -D [0^|1]DayName -^> %~n0 -D 0 ECHO -s sleep -^> %~n0 -s 3000 ECHO. ECHO. GOTO:EOF ) FOR /F "TOKENS=1*" %%x IN ("%*") DO (CALL:VBSFUNC %%x "%%y") ENDLOCAL & GOTO:EOF :VBSFUNC PARAM VALUE IF [-%1]==[--d] SET .=wsh.echo eval(date%~2) IF [-%1]==[--a] SET .=wsh.echo eval("len(""%~2"")") IF [-%1]==[--e] SET .=wsh.echo eval(%~2) IF [-%1]==[--u] SET .=wsh.echo eval("UCase(""%~2"")") IF [-%1]==[--l] SET .=wsh.echo eval("LCase(""%~2"")") IF [-%1]==[--r] SET .=wsh.echo eval("StrReverse(""%~2"")") IF [-%1]==[--h] SET .=wsh.echo eval("Hex(""%~2"")") IF [-%1]==[--o] SET .=wsh.echo eval("Oct(""%~2"")") IF [-%1]==[--c] SET .=wsh.echo eval("chr(""%~2"")") IF [-%1]==[--M] SET .=wsh.echo eval("MonthName(Month(date),%~2)") IF [-%1]==[--D] SET .=wsh.echo eval("WeekDayName(WeekDay(date),%~2)") IF [-%1]==[--s] SET .=Wsh.Sleep(%2) ECHO.>~.VBS %.% FOR /F "DELIMS=" %%A IN ('"Cscript/nologo ~.VBS 2>NUL"') DO SET "RESULT=%%A" IF DEFINED RESULT (ECHO %RESULT%) DEL ~.VBS 2>NUL GOTO:EOF
à mettre de préférence dans l'un des chemins du PATH exemple :\WINDOWS
ou bien dans le répertoire en cours
On peux l'utiliser directement dans notre fichier de commandes/console
depuis un fichier de commandes
Code:
1
2
3
4
5
6 @echo off set chaine=petit test RADAR echo %chaine% call hybrid -r %chaine% pause
l'appeler depuis un autre fichier et extraire les données qu'il va retournerCode:
1
2
3
4 echo hello call hybrid -s 3000 echo world
depuis la consoleCode:
1
2
3
4
5
6
7
8
9
10 @echo off for /f "delims=" %%a in ('cmd /c hybrid -d -1') do ( echo HIER JE CROIS QUE C'ETAIT LE..%%a REM On peux spliter la variable %%a en utilisant le bon DELIMS/TOKENS: REM dd=%%a REM mm=%%b rem yy=%%c ) pause
Code:
1
2
3 C:\USER>>hybrid -h 140 8C
- Côté perspective: petit à petit on va migrer vers PowerShell pour VBS..au contraire du Batch qui est de plus en plus enrichi de commandes externes (choice - forfiles - robocopy ..etc) et d'utilitaires tirece (les Gnu* - Nircmd - nconvert ..etc)
Salut,
A propos d'un possible abandon de vbs, l'auteur indique que le langage sera encore maintenu mais ne proposera plus d'évolution.Citation:
Envoyé par I'm_HERE
Cela dépend du contexte et des objectifs.Citation:
Envoyé par sokai
On peut aussi combiner plusieurs langages de scripting, c'est ce que propose également PowerShell : PowerShell+cmd+vbs(COM)+C#+F#+WPF...
PowerShell est un shell, mais aussi un framework technique.
Merci pour les réponses :ccool: