Comment faire des recherches dans un tableau sous command DOS - Shell/Batch - Programmation
Marsh Posté le 02-11-2025 à 20:33:58
Eh bien en galérant un peu ( et même beaucoup ) j'ai trouvé une solution, elle est dans le script ci-après.
Il y a 2 exemples de recherche / traduction : le premier trouve la dernière valeur de la table et en traduit l'équivalent pour le langage PERL, le second cherche une valeur qui n'existe pas dans la table.
CLS
ECHO OFF
SetLocal EnableDelayedExpansion
SET Oper1=equ
SET Oper2=neq
SET Oper3=lss
SET Oper4=gtr
SET Oper5=leq
SET Oper6=geq
SET OperPerl1=eq
SET OperPerl2=ne
SET OperPerl3=lt
SET OperPerl4=gt
SET OperPerl5=le
SET OperPerl6=ge
CLS
SET ManoZ=0
SET Crit=geq
SET ValRech=%Crit%
for %%Z in (1,2,3,4,5,6) do IF !Oper%%Z! EQU %Crit% SET ManoZ=%%Z
CALL :Affich
SET ManoZ=0
SET Crit=abc
SET ValRech=%Crit%
for %%Z in (1,2,3,4,5,6) do IF !Oper%%Z! EQU %Crit% SET ManoZ=%%Z
CALL :Affich
GOTO :EOF
:Affich
ECHO.
IF %ManoZ% EQU 0 ( ECHO ######## Pas trouve #######) Else ( ECHO ======== C'est Glop ========)
ECHO --- Valeur recherchee --- %ValRech% ---
ECHO --- ManoZ %ManoZ% ---
If %ManoZ% EQU 0 GOTO :NonTrouv
SET PourRech=OperPerl[!ManoZ!]
SET ValTrad=!OperPerl%ManoZ%!
ECHO --- Correspondance %PourRech% --- Valeur traduite %Valtrad% ---
:NonTrouv
ECHO.
PAUSE
EXIT /B
Marsh Posté le 10-11-2025 à 13:19:42
Sinon en Powershell c'est beaucoup plus simple.
DOS c'était bien il y a 10 ou 30 ans. Il faut tourner la page.
Marsh Posté le 10-11-2025 à 14:53:19
Je vois un rapport avec Perl, du coup pourquoi pas faire ça en Perl aussi?
Marsh Posté le 01-11-2025 à 12:20:29
Bonjour,
J'ai un problème que je n'arrive pas à résoudre dans un batch concernant l'accès à 2 tableaux que vous trouverez ci-après.
Le premier est constitué de valeurs sui doivent correspondre à une valeur entrée en argument %1 dans la commande d'exécution et le 2ème tableau donne la valeurs "traduite" pour la position trouvée ( si elle est trouvée, sinon je sortirai un message d'erreur ), cela afin d'entrer des paramètres dans le lancement d'un logiciel.
Par exemple si l'argument %1 est "NEQ" la position de la valeur trouvée est la 3ème du tableau 1 et je souhaite récupérer sa valeur "traduite" depuis le tableau 2, donc la 3ème valeur, c'est à dire ne.
Comment procéder ?
Vous allez peut-être me répondre d'enter la valeur traduite directement dans le logiciel mais cela ne me convient pas ... D'autre part, cela me permettra d'en apprendre un peu plus sur les commandes DOS.
Il me semble qu'il faut entrer la commande SetLocal EnableDelayedExpansion avant d'utiliser les tableaux mais en cherchant sur internet je n'ai pas trouvé comment faire.
Merci de votre aide.
Tableau 1
SET Oper[0]="000"
SET Oper[1]="EQU"
SET Oper[2]="NEQ"
SET Oper[3]="LSS"
SET Oper[4]="GRT"
SET Oper[5]="LEQ"
SET Oper[6]="GEQ"
Tableau 2
SET OperPerl[0]=##
SET OperPerl[1]=eq
SET OperPerl[2]=ne
SET OperPerl[3]=lt
SET OperPerl[4]=gt
SET OperPerl[5]=le
SET OperPerl[6]=ge