Page 1 sur 1

[Résolu] Variables indicée dans une boucle

Posté : 22 mars 2008 14:30
par ghenrion
Bonjour,

Comment utiliser une variable indicée dans une boucle du style %INPUTFILE%ii%%.

Par exemple :

Code : Tout sélectionner

    set INPUTFILE100=Sql_Correctif_UTILISAT_1_NULL.sql
   set INPUTFILE101=Sql_Correctif_UTILISAT_2_NOT_EXISTS.sql
   ..........
   set ii=100
:LOOP1
   if exist %INPUTFILE%ii%% (echo %INPUTFILE%ii%%) else (echo Fichier inconnu)
   set /a ii=%ii%+1
   if "%ii%"=="110" goto endloop1
   goto loop1
:ENDLOOP1
%INPUTFILE%ii%% ne marche pas. Il y a surement une syntaxe particulière.

Merci de votre aide.

Re: Variables indicée dans une boucle

Posté : 22 mars 2008 19:34
par flox
Bonjour,
n'est il pas possible de renommer les "INPUTFILE100" par "100", uniquement ?

Re: Variables indicée dans une boucle

Posté : 24 mars 2008 20:58
par ghenrion
Bonjour,
Effectivement, beaucoup plus simple.
Merci.

Savez vous comment faire un (dir /b *.sql > tmp.txt) :
1- avoir le chemin complet depuis la racine.
2- ne pas avoir l'extension du fichier

Je recupere les lignes du fichier tmp.txt dans un for, mais je ne peux pas utiliser la syntaxe %:-4% des variables pour enlever les 4 derniers caracteres.

Exemple

Code : Tout sélectionner

 for /f %%R in (%PRG3%.tmp) do (
      echo =================================================================================================== >>%PRG3%.log
      echo ===== The %DATE% At %TIME:~0,8% ===== Input file name ===== %%R ===== >>%PRG3%.log
      echo =================================================================================================== >>%PRG3%.log
      echo osql -S%SQLSERVER% -d%DATABASE% -i%%R
      osql -Uxxx -Pxxx -S%SQLSERVER% -d%DATABASE% -i%REP3%\%%R -o%REP3%\%%R.log -w999 -n
      type %REP3%\%%R.log >>%PRG3%.log
      find "rows affected" %REP3%\%%R.log >>%PRG3%.lst
   )

Re: Variables indicée dans une boucle

Posté : 24 mars 2008 22:24
par flox
Bonjour,
ghenrion a écrit :Savez vous comment faire un (dir /b *.sql > tmp.txt) :
1- avoir le chemin complet depuis la racine.
2- ne pas avoir l'extension du fichier
pour avoir le chemin complet tu peut te baser sur un find.

Code : Tout sélectionner

FOR /f "tokens=2 delims= " %%a IN ('find c:\rep\* "sql"') DO echo %%a
De la même manière avec un for on peut enlever le ".sql" en prenant le délimiteur "."


Bonne continuation

Re: Variables indicée dans une boucle

Posté : 12 avr. 2008 11:07
par Invité
Merci pour l'info. Je suis arrivé à faire ce que je voulais.