Il a-t-il parmi vous des spécialistes de la programmation DOS ?
Voici mon problème : comment réaliser la structure suivante ?
for i in <liste> do if <condition> then <plusieurs instructions> endif
endfor
L'exemple réel est le suivant mais il ne marche hélas pas. Ce batch doit
être appelé avec deux arguments.
*****************
@echo off
mp "%1.mp"
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ) do if not
exist %1.%%i goto end
tex mpimage %1.%%i,%2
dvips -E mpimage.dvi -o %1.%%i.eps
del %1.%%i
:end
del %1.mpx
del %1.log
del mpimage.log
del mpimage.dvi
*****************
Merci pour toute aide.
Cordialement,
--
Serge Nazarian
---
Courrier certifié sans virus.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.537 / Virus Database: 332 - Release Date: 07/11/2003
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Claude BELLAMY
Serge Nazarian s'est ainsi exprimé:
Il a-t-il parmi vous des spécialistes de la programmation DOS ?
Non, ce n'est pas de la "programmation DOS" ! De la programmation de COMMANDES, tout simplement. Car il n'y a pas de DOS là-dedans (tu as posté ton message dans microsoft.public.fr.winnt) !
Voici mon problème : comment réaliser la structure suivante ? for i in <liste> do if <condition> then <plusieurs instructions> endif endfor
L'exemple réel est le suivant mais il ne marche hélas pas. Ce batch doit être appelé avec deux arguments. ***************** @echo off mp "%1.mp" for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ) do if not
exist %1.%%i goto end
NORMAL que ça ne marche pas ! En admettant que le 1er argument passé soit "toto", si le fichier toto1 n'existe pas, on QUITTE IMMÉDIATEMENT la boucle en raison du GOTO! Donc dans ce cas on ne teste absolument pas l'existence de "toto2", "toto3", .....
Il FAUT donc que tu INVERSES ton test : ... for %%i in (1 2 ...20) do if exist %1.%%i tex mpimage %1.%%i,%2 & dvips -E mpimage.dvi -o %1.%%i.eps & del %1.%%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Le caractère "&" permet d'exécuter PLUSIEURS commandes à la suite (comme dans tout shell UNIX)
Personnellement, je n'aime pas beaucoup car cela donne des lignes interminables, et n'est pas très lisible.
On peut utiliser des parenthèses : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if exist %1.%%i ( tex mpimage %1.%%i,%2 dvips -E mpimage.dvi -o %1.%%i.eps del %1.%%i ) del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Mais il faut faire attention, la syntaxe avec parenthèses est assez susceptible, en particulier si on utilise la clause "ELSE" (taper "if /?" pour plus de détails)
Il existe une 3ème possibilité, c'est celle de passer par un sous-programme batch : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do call test.bat %1 %2 %%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Et le fichier "test.bat" contiendra ceci : @echo off if not exist %1.%3 exit tex mpimage %1.%3,%2 dvips -E mpimage.dvi -o %1.%3.eps del %1.%3
La 3ème syntaxe a l'avantage d'être plus universelle, car l'utilisation de "&" ou de parenthèses n'est pas reconnue sous DOS (le vrai!) et Win9x -- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
Serge Nazarian <nazarian.serge@wanadoo.fr> s'est ainsi exprimé:
Il a-t-il parmi vous des spécialistes de la programmation DOS ?
Non, ce n'est pas de la "programmation DOS" !
De la programmation de COMMANDES, tout simplement.
Car il n'y a pas de DOS là-dedans (tu as posté ton message dans
microsoft.public.fr.winnt) !
Voici mon problème : comment réaliser la structure suivante ?
for i in <liste> do if <condition> then <plusieurs instructions> endif
endfor
L'exemple réel est le suivant mais il ne marche hélas pas. Ce batch
doit être appelé avec deux arguments.
*****************
@echo off
mp "%1.mp"
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ) do if not
exist %1.%%i goto end
NORMAL que ça ne marche pas !
En admettant que le 1er argument passé soit "toto", si le fichier toto1
n'existe pas, on QUITTE IMMÉDIATEMENT la boucle en raison du GOTO!
Donc dans ce cas on ne teste absolument pas l'existence de "toto2", "toto3",
.....
Il FAUT donc que tu INVERSES ton test :
...
for %%i in (1 2 ...20) do if exist %1.%%i tex mpimage %1.%%i,%2 & dvips -E
mpimage.dvi -o %1.%%i.eps & del %1.%%i
del %1.mpx
del %1.log
del mpimage.log
del mpimage.dvi
Le caractère "&" permet d'exécuter PLUSIEURS commandes à la suite (comme
dans tout shell UNIX)
Personnellement, je n'aime pas beaucoup car cela donne des lignes
interminables, et n'est pas très lisible.
On peut utiliser des parenthèses :
...
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if exist
%1.%%i (
tex mpimage %1.%%i,%2
dvips -E mpimage.dvi -o %1.%%i.eps
del %1.%%i
)
del %1.mpx
del %1.log
del mpimage.log
del mpimage.dvi
Mais il faut faire attention, la syntaxe avec parenthèses est assez
susceptible, en particulier si on utilise la clause "ELSE"
(taper "if /?" pour plus de détails)
Il existe une 3ème possibilité, c'est celle de passer par un sous-programme
batch :
...
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do call
test.bat %1 %2 %%i
del %1.mpx
del %1.log
del mpimage.log
del mpimage.dvi
Et le fichier "test.bat" contiendra ceci :
@echo off
if not exist %1.%3 exit
tex mpimage %1.%3,%2
dvips -E mpimage.dvi -o %1.%3.eps
del %1.%3
La 3ème syntaxe a l'avantage d'être plus universelle, car l'utilisation de
"&" ou de parenthèses n'est pas reconnue sous DOS (le vrai!) et Win9x
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Il a-t-il parmi vous des spécialistes de la programmation DOS ?
Non, ce n'est pas de la "programmation DOS" ! De la programmation de COMMANDES, tout simplement. Car il n'y a pas de DOS là-dedans (tu as posté ton message dans microsoft.public.fr.winnt) !
Voici mon problème : comment réaliser la structure suivante ? for i in <liste> do if <condition> then <plusieurs instructions> endif endfor
L'exemple réel est le suivant mais il ne marche hélas pas. Ce batch doit être appelé avec deux arguments. ***************** @echo off mp "%1.mp" for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ) do if not
exist %1.%%i goto end
NORMAL que ça ne marche pas ! En admettant que le 1er argument passé soit "toto", si le fichier toto1 n'existe pas, on QUITTE IMMÉDIATEMENT la boucle en raison du GOTO! Donc dans ce cas on ne teste absolument pas l'existence de "toto2", "toto3", .....
Il FAUT donc que tu INVERSES ton test : ... for %%i in (1 2 ...20) do if exist %1.%%i tex mpimage %1.%%i,%2 & dvips -E mpimage.dvi -o %1.%%i.eps & del %1.%%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Le caractère "&" permet d'exécuter PLUSIEURS commandes à la suite (comme dans tout shell UNIX)
Personnellement, je n'aime pas beaucoup car cela donne des lignes interminables, et n'est pas très lisible.
On peut utiliser des parenthèses : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if exist %1.%%i ( tex mpimage %1.%%i,%2 dvips -E mpimage.dvi -o %1.%%i.eps del %1.%%i ) del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Mais il faut faire attention, la syntaxe avec parenthèses est assez susceptible, en particulier si on utilise la clause "ELSE" (taper "if /?" pour plus de détails)
Il existe une 3ème possibilité, c'est celle de passer par un sous-programme batch : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do call test.bat %1 %2 %%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Et le fichier "test.bat" contiendra ceci : @echo off if not exist %1.%3 exit tex mpimage %1.%3,%2 dvips -E mpimage.dvi -o %1.%3.eps del %1.%3
La 3ème syntaxe a l'avantage d'être plus universelle, car l'utilisation de "&" ou de parenthèses n'est pas reconnue sous DOS (le vrai!) et Win9x -- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
Jean-Claude BELLAMY
Serge Nazarian s'est ainsi exprimé:
Il a-t-il parmi vous des spécialistes de la programmation DOS ?
Non, ce n'est pas de la "programmation DOS" ! De la programmation de COMMANDES, tout simplement. Car il n'y a pas de DOS là-dedans (tu as posté ton message dans microsoft.public.fr.winnt) !
Voici mon problème : comment réaliser la structure suivante ? for i in <liste> do if <condition> then <plusieurs instructions> endif endfor
L'exemple réel est le suivant mais il ne marche hélas pas. Ce batch doit être appelé avec deux arguments. ***************** @echo off mp "%1.mp" for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ) do if not
exist %1.%%i goto end
NORMAL que ça ne marche pas ! En admettant que le 1er argument passé soit "toto", si le fichier toto1 n'existe pas, on QUITTE IMMÉDIATEMENT la boucle en raison du GOTO! Donc dans ce cas on ne teste absolument pas l'existence de "toto2", "toto3", .....
Il FAUT donc que tu INVERSES ton test : ... for %%i in (1 2 ...20) do if exist %1.%%i tex mpimage %1.%%i,%2 & dvips -E mpimage.dvi -o %1.%%i.eps & del %1.%%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Le caractère "&" permet d'exécuter PLUSIEURS commandes à la suite (comme dans tout shell UNIX)
Personnellement, je n'aime pas beaucoup car cela donne des lignes interminables, et n'est pas très lisible.
On peut utiliser des parenthèses : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if exist %1.%%i ( tex mpimage %1.%%i,%2 dvips -E mpimage.dvi -o %1.%%i.eps del %1.%%i ) del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Mais il faut faire attention, la syntaxe avec parenthèses est assez susceptible, en particulier si on utilise la clause "ELSE" (taper "if /?" pour plus de détails)
Il existe une 3ème possibilité, c'est celle de passer par un sous-programme batch : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do call test.bat %1 %2 %%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Et le fichier "test.bat" contiendra ceci : @echo off if not exist %1.%3 exit tex mpimage %1.%3,%2 dvips -E mpimage.dvi -o %1.%3.eps del %1.%3
La 3ème syntaxe a l'avantage d'être plus universelle, car l'utilisation de "&" ou de parenthèses n'est pas reconnue sous DOS (le vrai!) et Win9x -- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
Serge Nazarian <nazarian.serge@wanadoo.fr> s'est ainsi exprimé:
Il a-t-il parmi vous des spécialistes de la programmation DOS ?
Non, ce n'est pas de la "programmation DOS" !
De la programmation de COMMANDES, tout simplement.
Car il n'y a pas de DOS là-dedans (tu as posté ton message dans
microsoft.public.fr.winnt) !
Voici mon problème : comment réaliser la structure suivante ?
for i in <liste> do if <condition> then <plusieurs instructions> endif
endfor
L'exemple réel est le suivant mais il ne marche hélas pas. Ce batch
doit être appelé avec deux arguments.
*****************
@echo off
mp "%1.mp"
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ) do if not
exist %1.%%i goto end
NORMAL que ça ne marche pas !
En admettant que le 1er argument passé soit "toto", si le fichier toto1
n'existe pas, on QUITTE IMMÉDIATEMENT la boucle en raison du GOTO!
Donc dans ce cas on ne teste absolument pas l'existence de "toto2", "toto3",
.....
Il FAUT donc que tu INVERSES ton test :
...
for %%i in (1 2 ...20) do if exist %1.%%i tex mpimage %1.%%i,%2 & dvips -E
mpimage.dvi -o %1.%%i.eps & del %1.%%i
del %1.mpx
del %1.log
del mpimage.log
del mpimage.dvi
Le caractère "&" permet d'exécuter PLUSIEURS commandes à la suite (comme
dans tout shell UNIX)
Personnellement, je n'aime pas beaucoup car cela donne des lignes
interminables, et n'est pas très lisible.
On peut utiliser des parenthèses :
...
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if exist
%1.%%i (
tex mpimage %1.%%i,%2
dvips -E mpimage.dvi -o %1.%%i.eps
del %1.%%i
)
del %1.mpx
del %1.log
del mpimage.log
del mpimage.dvi
Mais il faut faire attention, la syntaxe avec parenthèses est assez
susceptible, en particulier si on utilise la clause "ELSE"
(taper "if /?" pour plus de détails)
Il existe une 3ème possibilité, c'est celle de passer par un sous-programme
batch :
...
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do call
test.bat %1 %2 %%i
del %1.mpx
del %1.log
del mpimage.log
del mpimage.dvi
Et le fichier "test.bat" contiendra ceci :
@echo off
if not exist %1.%3 exit
tex mpimage %1.%3,%2
dvips -E mpimage.dvi -o %1.%3.eps
del %1.%3
La 3ème syntaxe a l'avantage d'être plus universelle, car l'utilisation de
"&" ou de parenthèses n'est pas reconnue sous DOS (le vrai!) et Win9x
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Il a-t-il parmi vous des spécialistes de la programmation DOS ?
Non, ce n'est pas de la "programmation DOS" ! De la programmation de COMMANDES, tout simplement. Car il n'y a pas de DOS là-dedans (tu as posté ton message dans microsoft.public.fr.winnt) !
Voici mon problème : comment réaliser la structure suivante ? for i in <liste> do if <condition> then <plusieurs instructions> endif endfor
L'exemple réel est le suivant mais il ne marche hélas pas. Ce batch doit être appelé avec deux arguments. ***************** @echo off mp "%1.mp" for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ) do if not
exist %1.%%i goto end
NORMAL que ça ne marche pas ! En admettant que le 1er argument passé soit "toto", si le fichier toto1 n'existe pas, on QUITTE IMMÉDIATEMENT la boucle en raison du GOTO! Donc dans ce cas on ne teste absolument pas l'existence de "toto2", "toto3", .....
Il FAUT donc que tu INVERSES ton test : ... for %%i in (1 2 ...20) do if exist %1.%%i tex mpimage %1.%%i,%2 & dvips -E mpimage.dvi -o %1.%%i.eps & del %1.%%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Le caractère "&" permet d'exécuter PLUSIEURS commandes à la suite (comme dans tout shell UNIX)
Personnellement, je n'aime pas beaucoup car cela donne des lignes interminables, et n'est pas très lisible.
On peut utiliser des parenthèses : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if exist %1.%%i ( tex mpimage %1.%%i,%2 dvips -E mpimage.dvi -o %1.%%i.eps del %1.%%i ) del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Mais il faut faire attention, la syntaxe avec parenthèses est assez susceptible, en particulier si on utilise la clause "ELSE" (taper "if /?" pour plus de détails)
Il existe une 3ème possibilité, c'est celle de passer par un sous-programme batch : ... for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do call test.bat %1 %2 %%i del %1.mpx del %1.log del mpimage.log del mpimage.dvi
Et le fichier "test.bat" contiendra ceci : @echo off if not exist %1.%3 exit tex mpimage %1.%3,%2 dvips -E mpimage.dvi -o %1.%3.eps del %1.%3
La 3ème syntaxe a l'avantage d'être plus universelle, car l'utilisation de "&" ou de parenthèses n'est pas reconnue sous DOS (le vrai!) et Win9x -- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *