Batch, incrementer des variables

Résolu/Fermé
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - 20 sept. 2016 à 00:01
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - 21 sept. 2016 à 22:52
Bonjour,
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION 
Mode con cols=80 lines=35
@for %%n in (%0) do set chemin=%%~dpn

::---------------------------------------------------------------
:Environnement
set tempx=!chemin!tempx\

set tableau=!tempx!tableau.txt

del /Q !tempx!

::---------------------------------------------------------------
:Configuration
set /a cols_max=10
set /a lign_max=20
set /a boucle_main=0
::---------------------------------------------------------------
:init

::---------------------------------------------------------------
:main
set /a boucle_main+=1
set /a boucle_ligne=0
set /a lign=0
set /a cols=0

:ligne
set /a boucle_colonne=0
set /a boucle_ligne+=1
set /a lign+=1
set /a cols=0

	:colonne
	set /a cols+=1	
	set /a boucle_colonne+=1
	set /a var!cols!=L!lign!_C!cols!
	
	if not !cols!==!cols_max! goto colonne

cls
set /a charg_main=100*((!lign!)/!lign_max!)
echo [!charg_main!%%]
if not !charg_main!==100 goto ligne




je souhaite ecrire dans mon fichier tableau mes variables var!cols! donc qui s'incremente a chaque tour de boucle ligne et colonne.

Je veux les ecrires par ligne, car var!cols! est dynamique, pour lexemple j'ai defini une limite mais cette limite sera variable.
donc le resultat que je veux dans mon fichier tableau:

ligne1= L1_C1,L1_C2,L1_C3,L1_C4,L1_C5,etc
ligne2= L2_C1,L2_C2,L2_C3,L2_C4,L2_C5, etc

Pour recuperer les valeur j'utilises ses deux boucles, mais voila je n'arrive pas a m'en servir pour definir toute mes variable L1_C1 à Ln_Cn..
::for /f "tokens=%tokenboucle1% delims=," %%a in ("!tableau!") do ( set data_mot_rch=%%a)
::for /f "tokens=1,* delims=:" %%a in ('findstr /n /r . "!tableau!" ^| findstr "^^%boucle_ligne%:"') do (set data_S1=%%b)

1 réponse

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
21 sept. 2016 à 09:31
hello
C:> type aa.bat
@echo off
setlocal enableDelayedExpansion
for /L %%a in (1,1,5) do (
set l=ligne%%a=
for /L %%b in (1,1,5) do (
set l=!l!L%%a_C%%b,
)
set l=!l:~0,-1!
echo !l!
)

C:> aa
ligne1=L1_C1,L1_C2,L1_C3,L1_C4,L1_C5
ligne2=L2_C1,L2_C2,L2_C3,L2_C4,L2_C5
ligne3=L3_C1,L3_C2,L3_C3,L3_C4,L3_C5
ligne4=L4_C1,L4_C2,L4_C3,L4_C4,L4_C5
ligne5=L5_C1,L5_C2,L5_C3,L5_C4,L5_C5

C:>
0
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
21 sept. 2016 à 22:30
ok merci j'avais pas penser a utiliser la boucle de cette maniere, par contre jai essayer de rajouter un ! à cette variable :
set l=!l!L%%a_C%%b,

qui donne

set l=!l!^!L%%a_C%%b^!,

pour que a chaque ligne j'ai !L1_C1!,!L1_C2!, etc, mais ca marche pas
0
poparnassus Messages postés 426 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
21 sept. 2016 à 22:52
ok j'ai reussie merci
0