[BATCH] Détecter une chaine

Détecter une chaine [BATCH] - Shell/Batch - Programmation

Marsh Posté le 01-02-2006 à 10:15:25    

Bonjour tout le monde.
 
voilà, je voudrais détecter la présence d'une chaine dans une variable, mais j'ai pas trouvé de réponse pour le moment.
 
Est-ce que quelque chose dans le genre pourrait fonctionner :
 

Code :
  1. SET mavariable=latestvaleur
  2. IF %mavariable%==*test* GOTO ...


 
Merci d'avance.
 
 
 
 
 
 

Reply

Marsh Posté le 01-02-2006 à 10:15:25   

Reply

Marsh Posté le 01-02-2006 à 10:36:42    

Si ta question était si on pouvait utiliser les * pour emplacer un ou des caractères, la réponse est non.

Reply

Marsh Posté le 01-02-2006 à 11:15:49    

wackevat a écrit :

Si ta question était si on pouvait utiliser les * pour emplacer un ou des caractères, la réponse est non.


 
Oui, c'etait un peu ma question mais comment faire alors pour détecter la présence de cette chaine?
 
 :)  

Reply

Marsh Posté le 01-02-2006 à 11:53:50    

Ca serait pas plutot avec un FOR non?
Mais comment faire?
 
 :ange:

Reply

Marsh Posté le 01-02-2006 à 14:17:10    

Oui, avec for, tu fais une boucle qui vérifie si une sous-chaîne répond au critère.
 
Pour extraire une sous-chaîne de y caractères à partir de la position x (premier caractère = position 0):
%VAR:~x,y%
 
mais c'est un peu laborieux si la chaîne de départ est assez longue.
 
C'est quoi le problème à l'origine (objectif du batch) en fait ?

Reply

Marsh Posté le 01-02-2006 à 16:27:06    

Merci Nglechau,
 
ok, je peux essayer ca dans un FOR en incrémentant le x  :)  
C'est vrai, j'y connais rien en batch, mais bon j'vais essayer ca.
 
Sinon pour info, c'est pour associer des noms d'imprimantes reseau à l'ouverture de session avec la commande start
J'ai mes salles : C104, C108, C112 ...
et mes imprimantes : Lexmark C104 -1 , Lexmark C104 -2 , Epson C108 ...
et le nom des stations C104A01, C104A02 ...
 
L'utilisateur imprime dans la salle ou il se trouve.
 

Reply

Marsh Posté le 01-02-2006 à 16:30:38    

... et tu veux détecter les chaînes "d'identification" de salles comme C104, C108, etc. n'est-ce pas ?

Reply

Marsh Posté le 01-02-2006 à 16:46:38    

wackevat a écrit :

... et tu veux détecter les chaînes "d'identification" de salles comme C104, C108, etc. n'est-ce pas ?


 
Oui, en effet.
Si l'utilisateur se trouve en C104, la station aura un computername de la forme C104XXX, et donc il faut connecter les imprimantes qui se trouvent dans cette salle et dont le nom contient C104 en l'occurence.
 
 :)

Reply

Marsh Posté le 01-02-2006 à 17:00:35    

OKi. Donc SALLE=%STATION:~0,4% et il faut "filtrer" %SALLE% dans la liste des imprimantes. findstr ne peut pas t'aider ? Comment se présente cette liste ?

Reply

Marsh Posté le 01-02-2006 à 17:36:13    

Oui, merci Ng
 
ca peut se faire comme ca.
Mais pour la liste des imprimantes je sais pas comment faire. Je pensais faire un tableau, mais ca existe les tableaux en batch?
 

Reply

Marsh Posté le 01-02-2006 à 17:36:13   

Reply

Marsh Posté le 01-02-2006 à 18:18:08    

Je suis vraiment pas doué en Batch  :(  
 
J'ai créé mon fichier imprimantes.txt avec dedans :
 
Lexmark c104
Lexmark c102
Epson c108
....
 
Dans mon script je fais :

Code :
  1. findstr /i c104 imprimantes.txt


Ca me renvoit bien Lexmark c104
alors j'aimerais bien récupérer ce résultat dans une variable mais impossible :

Code :
  1. findstr /i c104 imprimantes.txt > %mavar%


Ca fonctionne pas.
 
Je cherche encore  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed