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:
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:
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 |
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:
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 |
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.
hh ntcmds.chm::/shift.htm
et pour finir, voici un petit exemple qui se base sur la commande "Shift".
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
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é.
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)
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 |
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.
1 2 3 4 5 6 7
| @echo off
Call :label A B C
exit /b
:label
echo %%1 %1
echo %%* %* |
Partager