salut,

ce petit post n'est pas une introduction sur la notion des paramètres
Pour ceux qui ne savent pas qu'est ce qu'un paramètre, vous pouvez voir ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
hh ntcmds.chm::/call.htm

difference entre %1 et %1%
---------------------------


en parcourant un peu le net j'ai observé que des batcheurs utilsent la syntaxe %1% au lieu de %1, ce choix ce porte essentiellement sur la coloration syntaxiques de quelques éditeurs de cette syntaxe.
malheureusement, cette syntaxe "%1%" peux poser quelques problèmes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
@echo off 
Setlocal

call :_1 10
call :_2 dev
call :_3 dev %%%%1%%%%
call :_3 dev %%%%1 ::

endlocal
pause & exit /b

:_1
echo.
echo %0
set /A a=%1%*2
set /A b=%1*2
echo %%1%% %a%
echo  %%1 %b%
goto:eof

:_2
echo.
echo %0 
echo %%1%% %1%eloppez %
echo  %%1 %1eloppez %
goto:eof

:_3
echo.
echo %0 %2
%3 for %%a in (%1%) do echo %%a
for %%a in (%1) do echo %%a
goto:eof
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
:_1
%1% 10102
 %1 20

:_2
%1% dev
 %1 developpez

:_3 %1%
deva
for
%a
in
(dev

:_3 %1
dev

la commande shift
------------------


la commande shift est l'une des commandes internes, elle permet de décaler la position des paramètres et elle ne s'utilise qu'avec les fichiers de commandes, c'est à dire qu'on ne peux pas l'utiliser interractivement.


voici un petit exemple:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@ECHO OFF

Set @SFUNC=CALL :DECAL A B C D

%@SFUNC%

EXIT /B


:DECAL
echo %1
shift /0
echo %1
shift /0
echo %1
shift /0
echo %1
shift /0
echo %1

GOTO :EOF

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
A
B
C
D
Commande ECHO désactivée.


je vous conseille de voir l'aide de cette commande, qui est plus complète.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
hh ntcmds.chm::/shift.htm

et pour finir, voici un petit exemple qui se base sur la commande "Shift".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
@ECHO OFF
SEt X=%1||%0 "(1 1 9)" A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
SEt /=%2& S%6T #=%4& S%6T ##=%5& S%6T @=%6& SET ###=%~1
%7OR /L %%? In %###% %5o S%9i%7t
F%7R %%%2 %1n (%4 %5 %7 %8) D%7 S%@%t %%%2=%%%2
F%7R /%4 %%? %1%6 %###% %##%%7 sh%1ft
Echo %##%%@%%5%@%%L%%L%%O%%P%%P%%@%%9.%#%%O%%M%
P%/%%4%2E

extraction de données par positionnement de paramètres
----------------------------------------------------------


les paramètres nous permettent aussi de manipuler des chaînes de caractères, cette technique dépend fortement de la chaîne de caractères, et n'est malheureusement pas générique

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Echo OFF

SET STR=Adresse Email : walid2mi@gmail.com


Pushd "%Temp%"

Echo(%str% | findstr /i "^Adresse email"  > _adresse.bat
>adresse.bat Echo set email=%%3
call _adresse.bat
echo(%email%
erase _adresse.bat adresse.bat 

Popd

exit /b
paramètres %0
----------------------------------------------------


si on utilise le paramètre %0 dans un sous-programme il va nous retourner le nom du label, par contre si on appel un autre script de commande par CALL le paramètre %0 va se referer au nom du fichier de commande appelé.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CMD> type hello.bat 


@Echo OFF

Call :label a
Call hello2 a

pause
exit /b


:label
echo %0 %1

CMD> type hello2.bat

echo %0 %1

CMD> hello.bat

expansion de références d'arguments
--------------------------------------


les paramètres supportent les mêmes modificateurs de variables (voir: HOWTO variables 1/2)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
@echo off

for %%# In (attrib.exe cipher.exe command.com) do Call :FindFiles %%#
pause
Exit /b


:FindFiles
echo(%~tz$PATH:1
Goto:EOF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
14/04/2008 13:00 12288 D:\WINDOWS\system32\attrib.exe
14/04/2008 13:00 57344 D:\WINDOWS\system32\cipher.exe
14/04/2008 13:00 52103 D:\WINDOWS\system32\command.com
on peux aussi utiliser la syntaxe %* qui se refère à tous les paramètres.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
@echo off
Call :label A B C
exit /b

:label
echo %%1 %1
echo %%* %*