OVH Cloud OVH Cloud

Script "cmd" : une colle aux initiés ? Ou un défi...

11 réponses
Avatar
blaigle
Bonjour ;

J'ai un d=E9fi =E0 lancer aux sp=E9cialistes des scripts "cmd" de Windows
NT/2000/XP/...
Ce n'est pas juste pour le plaisir de poser une colle, car =E7a me
rendrait bien service d'avoir la solution !!

Je recherche un moyen pour remplace, dans une cha=EEne de caract=E8res
(en fait, dans une variable) tout caract=E8re '*' par un '%' (ou =E0 la
limite par n'importe quoi, le probl=E8me =E9tant l'=E9toile, en fait).
J'ai pens=E9 =E0 quelque chose comme :

set var=3D%var:*=3D%%%

ou, si l'on utilise l'expansion retard=E9e :

set var=3D!var:*=3D%%!

mais =E7a ne marche pas, car '*' est un caract=E8re sp=E9cial. Je pense
avoir essay=E9 tout ce que je pouvais imaginer, du style :

set var=3D%var:^*=3D%%%
set var=3D%var:^^*=3D%%%
set var=3D%var:^^^*=3D%%%
set var=3D%var:\*=3D%%%
set var=3D%var:\\*=3D%%%
set var=3D%var:\\\*=3D%%%

=3D> Quelqu'un pourrait-il me dire comment proc=E9der ? Sinon il faut
faire une boucle pour extraire un par un les caract=E8res de la variable
etc... (a priori, j'ai ce qu'il faut pour =E7a), mais c'est moins
=E9l=E9gant et bien plus long =E0 ex=E9cuter (car la substitution
souhait=E9e s'inscrit dans une boucle...) !!
Alors ?...=20
Merci d'avance pour vos id=E9es !

Bertrand.

1 réponse

1 2
Avatar
blaigle
La première méthode est directement inspirée de la tienne.


Certes, mais tu l'as améliorée. Merci !

Pour la seconde, tu as dû essayer avec une très grande chaîne, car chez moi,
c'est OK avec 200 caractères...


C'était juste pour voir, mais en effet, j'ai mis le plus de
caractères que je pouvais (ou à peu près). Mais même avec moins,
c'est plus lent que l'autre.

Enfin, avec tout ça, j'ai solutionné mon problème, même si je
regrette qu'avec l'étoile, il ne soit pas possible d'utiliser
simplement la substitution de caractères permise par "set".

Bonne continuation !
Bertrand.

1 2