Rechercher : dans
Par :

[Batch] Extraction chaîne de caractères

Dernière réponse le 29 jui 2009 à 10:50:55 jejeTech, le 2 jun 2006 à 09:34:27 
 Signaler ce message aux modérateurs

Salut,

j'ai un problème avec la manipulation d'une chaîne de caractères. J'ai un fichier (temp2.txt) qui contient une chaîne de caractètes comme tel :

1:4162

La chose que je veux faire c'est d'extraire le chiffre "4162" afin de la placer dans une variable temporairement. J'utilise la commande FOR afin de réaliser ceci.

Voici la ligne qui doit me permettre de faire cette extraction :

FOR /F "eol=: tokens=1 " %i in temp2.txt do @echo %i


Merci d'avance de votre aide

Meilleures réponses pour « [Batch] Extraction chaîne de caractères » dans :
Sed - Introduction à SED - Part III VoirSED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Sed - Introduction à SED - Part II VoirSED - The Stream EDitor - Part II Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...

1

Pool Orion, le 2 jun 2006 à 09:42:02

Et quel est le problème ?
Pool Orion

Répondre à Pool Orion

2

jejeTech, le 2 jun 2006 à 09:53:39

Le problème c'est que la ligne suivante "FOR /F "eol=: tokens=1 " %i in temp2.txt do @echo %i " ne fonctionne pas afin d'extraire le chiffre "4162" de la ligne "1:4162".

La commande dos FOR ne marche pas tel quel est présentée, j'aurai voulu un avis de quelqu'un qui connait bien cette commande afin d'arriver à mon objectif.

Merci

Répondre à jejeTech

3

Pool Orion, le 2 jun 2006 à 10:05:29

Je ne comprend pas pourquoi tu renseignes que le caractère de fin de ligne est ':' avec 'eol'.

Tu devrais renseigner le colon comme délimiteur. De plus, tu devras récupérer deux résultat -> 1 et 4162.
Pool Orion

Répondre à Pool Orion

4

jejeTech, le 2 jun 2006 à 10:30:27

J'ai trouvé cette commande en cherchant sur INTERNET, j'ai essayé de l'adapter à mon script mais je ne comprends pas tout dans les paramètres de FOR.

Je n'arrive pas à saisir comment extraire le chiffre "4162" de ma ligne en utilisant la délimitation ":" avec FOR.

Est-ce-que tu peux m'aider à comprendre cette commande ?

Merci

Répondre à jejeTech

5

Pool Orion, le 2 jun 2006 à 10:55:47

La fonction FOR permet d'exécuter une boucle sur, par exemple, les enregistrements d'un fichier.
Le fichier à lire doit être renseigné après le 'IN'
Les paramètres dont tu as besoin sont tokens -> liste des zones à récupérer et delims -> délimiteur de tes zones.

Je pense que la structure la plus appropriée dans ton cas est la suivante :

FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do ...

Suivant ton exemple, tu devrais avoir ensuite i -> 1 et j (la lettre suivante) = 4162

PS: sur certaine version de dos, il n'est pas possible d'exécuter d'appel à une procédure dans le do, il faut essayer si tu en a vraiment besoin.
Pool Orion

Répondre à Pool Orion

6

jejeTech, le 2 jun 2006 à 11:18:57

J'ai essayé dans mon script avec ceci :

FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do @echo %i %j
echo %j%


Je voudrais tester avec l'affichage mais cela ne marche pas. Peut-être que j'ai mal codé ma ligne avec echo.

Dans l'exécution du fichier batch je ne vois pas l'affichage de ma variable %j.

??

Répondre à jejeTech

7

Pool Orion, le 2 jun 2006 à 11:40:26
  • +5

Désolé, j'ai été obligé de chercher un peu aussi. Il faut utiliser les variables avec deux fois le signe %.

-->

pause
@echo off
FOR /F "tokens=1,2 delims=:" %%i in (temp2.txt) do @echo %%i et %%j
pause

donne le résultat 1 et 4162
Pool Orion

Répondre à Pool Orion

11

ga1841, le 3 mai 2007 à 09:50:42

J'ai remarqué que tu maitrisé bien la commande FOR et j'ai un pb avec une ligne de comande FOR. Cette ligne est correcte car lancé seul dans l'invite de commande j'obtien le résultat voulu mais intégré au reste de mon script elle ne passe plu du tout. si tu connai la raison et la solution merci de me le faire savoir. Merci d'avance

Répondre à ga1841

13

xed, le 30 aoû 2007 à 09:59:49

Bonjour,

Dans une boucle FOR quand tu lances directement la cmd, il y a 1 seul % devant ta varialbe, par exemple %i
Mais qd tu mets cette boucle dans un Batch, il faut y mettre 2 fois % donc %%i

Voilà tout.

Configuration: Windows 2000
Firefox 2.0.0.6

Répondre à xed

8

jejeTech, le 2 jun 2006 à 11:58:23

Merci bien ca marche.

C'est cool. Tu est un pro !!

Salut et @+

Répondre à jejeTech

9

mansour79, le 19 oct 2006 à 14:19:39

Bonjour tous le monde, voila je suis debutant dans le pl|sql, j'ai un travail note a rendre la semaine prochaine .
le probleme est le suivant : utilise pl|sql et le c pour arrive a extraitre une chaine de caractere depuis un fichier.txt.
exemple lire un fichier html ou c note tous les auteurs avec leurs revus, ville, etc , il faut a ppelle une fonction c avec pl |sql pour lire ce fichier et remplire les table , auteur, revus, ville...
j'espere trouve une piste pour resourdre ca.
merci bien.

Répondre à mansour79

10

bobthefox, le 8 nov 2006 à 15:33:39

Mansour79 :
voici une piste pour ton devoir ==> change de forum... ^^
tu pourras trouver des réponses sur les forums consacrés au PL/SQL je pense (ou au C)
bon courage

Répondre à bobthefox

12

alexkidd, le 30 mai 2007 à 16:06:46

Bonjour je suis un debutant sur le script unix et je souhaiterais savoir comment se nomme et s'utilise la fonction qui permet d'extraire une sous chaine sous linux sachant que la chaine est dans une variable j'ai fais :

cat $fichier >>SUBSTR($fichier,1,10)||".fic"

mais ca ne marche pas !!
Help me !!!

Répondre à alexkidd

14

1223, le 27 fév 2008 à 13:14:23

Bonjour
voici

@echo off
for /L %%A IN (1,1,50) do (PING -n 1 -w 5 192.168.1.%%A | find "TTL" | cscript //B convert.vbs)>> text.txt
for /f "tokens=1,2 delims=:" %%a in (text.txt) do (echo %%a >> text1.txt)
for /f "tokens=3" %%a in (text1.txt) do (echo %%a ) >> text2.txt
TYPE text2.txt
je voudrais exploiter les résultats enregistrés au fichier text2.txt "adresse ip",le probléme c'est ce que ces adresses sont terminés par un "ÿ" exemple 192.168.1.3ÿ et quand je fais par exemple un ping pour tester"for /f %%a in (text2.txt) do (ping %%a )",il ne donne rien " il ne connait pas le host"
for /f %%a in (text2.txt) do (ping %%a )
et quand j'affiche le contenu du fichier text2.txt,il me donne juste adresse ip

si possible avoir réponse

Merci d'avance de votre aide

Répondre à 1223

15

batikha, le 13 jun 2008 à 15:11:17

Bonjour, je n'arrive pas a resoudre le probleme suivant:

Ecrire une procédure en PL/SQL qui fait passer un texte en paramètre ;
Et il doit détermine :
- Les doubles lettres (minuscules) apparues dans le texte (exemple : ss, mm, ll, etc.).
- Le nombre de phrases (séparée par un point).



pouvez vous m'aider s'il vous plait?? c'est urgent

Merci a+

Répondre à batikha

16

allo, le 25 aoû 2008 à 12:30:24

Si Chaine = abcdefg

substring(Chaine,3,2) = cd
substring(Chaine,2,4) = bcde

Répondre à allo

17

jesaispu, le 5 nov 2008 à 19:28:10

Logique

Répondre à jesaispu

18

sebj9, le 15 jun 2009 à 17:46:39

Bonjour,

Je cherche à extraire d'un fichier txt un bou d'une ligne pour le remplacer dans mon script ensuite. C'est la ligne 5 qui vaut : "Home Directory"="C:\\Program Files\\Symantec AntiVirus\\" et je veux extraire "C:\\Program Files\\Symantec AntiVirus".

Je sais qu'on peut utiliser la commande FOR MS-DOS mais je ne connais pas les paramétrés à rentrer.

Cordialement

SEBJ

Répondre à sebj9

19

 CedK, le 29 jui 2009 à 10:50:55

Il existe une commande DOS pour extraire une chaine de caractère. On peut le voir en obtenant l'aide de la commande SET dans une invite de commande (tapez set /?). Extrait de l'aide :

La substitution de la variable d'environnement a été améliorée comme suit :

    %PATH:ch1=ch2%

développe la variable d'environnement PATH, remplaçant chaque
occurrence de "ch1" dans le résultat développé par "ch2".  "ch2" peut être
une chaîne vide pour supprimer toutes les occurrences de "ch1" de la sortie
développée. "ch1" peut commencer par un astérisque, auquel cas
la commande traitera la chaîne à partir du début et jusqu'à la première
occurrence du reste de ch1.

Vous pouvez aussi spécifier des sous-chaînes pour une expression.

    %PATH:~10,5%

développe la variable d'environnement PATH et utilise seulement 5
caractères à partir du onzième (décalage de 10)  dans le résultat sous forme
développée. Si la longueur n'est pas spécifiée, tout le reste de la valeur
de la variable est traité. Si l'une des valeurs (décalage ou longueur)
est négative, alors le nombre utilisé est la longueur de la valeur de la
variable d'environnement ajoutée au décalage ou à la longueur donné.

    %PATH:~-10%

extrait les 10 derniers caractères de la variable PATH.

    %PATH:~0,-2%

extrait tous les caractères sauf les deux derniers de la variable PATH.


Donc soit "machaine" la variable contenant "1:4162" :
set machaine=1:4162

pour obtenir 4162 dans la variable "resultat", il suffit d'écrire :
set /A resultat=%machaine:~2%


Voilou voilou
CedK

Répondre à CedK