Je veux écrire le code suivant dans un fichier de commandes. Comment puis je faire ça?
for (i=0; i<100; i++)
{
rem = i % 10;
if(rem == 0)
{
// ECHO something
}
else
{
ECHO i
}
}
C'est assez compliqué, à cause de la façon dont le développement de variable dans les boucles fonctionne dans les fichiers batch. Les fichiers de commandes ont leur propre construction for
name__; pas besoin de perdre son temps avec goto
name__s . %%
est l'opérateur modulo dans les fichiers de commandes, car %
est réservé à l'expansion des variables.
Ce code fonctionne pour moi:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (0,1,99) do (
set /a remainder = %%i %% 10
if !remainder! == 0 (
echo something
) else (
echo %%i
)
)
endlocal
Modulo peut être fait avec set /a
. Les boucles peuvent être réalisées avec goto
, exactement comme vous convertissez ces boucles for
en goto
en C
@echo off
set "i=0"
:loop
if %i% equ 100 goto :endfor
set /a "mod=i %% 10"
if %mod% equ 0 (
echo something %mod%
) else (
echo %i%
)
set /a "i+=1"
goto :loop
:endfor
Notez que rem
est une commande permettant de démarrer un commentaire. L'utilisation de rem
dans le script peut entraîner un comportement indésirable.
La boucle peut être simplifiée avec for /l
mais vous devez maintenant activer l’extension retardée car tout le corps de for
est analysé en une fois.