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

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
ghenrion
Batcheur débutant
Messages : 11
Enregistré le : 22 mars 2008 14:23

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

Message 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.
Avatar du membre
flox
Administrateur du site
Messages : 158
Enregistré le : 18 janv. 2008 22:05

Re: Variables indicée dans une boucle

Message par flox »

Bonjour,
n'est il pas possible de renommer les "INPUTFILE100" par "100", uniquement ?
ghenrion
Batcheur débutant
Messages : 11
Enregistré le : 22 mars 2008 14:23

Re: Variables indicée dans une boucle

Message 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
   )
Avatar du membre
flox
Administrateur du site
Messages : 158
Enregistré le : 18 janv. 2008 22:05

Re: Variables indicée dans une boucle

Message 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
Invité

Re: Variables indicée dans une boucle

Message par Invité »

Merci pour l'info. Je suis arrivé à faire ce que je voulais.
Répondre