Comment trouver une chaîne de caractère que l'on ne connaît avec un fichier .bat

Résolu/Fermé
Unstagiaire - Modifié le 12 juin 2019 à 15:10
 Unstagiaire - 13 juin 2019 à 14:17
Bonjour,

Cela fait depuis un long moment que je bloque sur la création d'un fichier batch qui va me permettre de trouver un nombre (de 10 caractères) que je ne connaît pas.

J'ai un fichier log avec beaucoup de texte dedans et je suis à la recherche d'un nombre dans tous ce tintouin.

Je sais que je dois utiliser une boucle "for" mais je ne sais pas comment chercher une valeur que je connais pas.

Je sais pas si je suis assez claire dans mon explication en espérant que vous êtes plus doué que moi.

Merci.
A voir également:

3 réponses

jordane45 Messages postés 38195 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 mai 2024 4 675
12 juin 2019 à 15:17
Bonjour,

Plutot que de le faire en batch, je le ferai en VBScript via une regex
https://www.robvanderwoude.com/vbstech_regexp.php

Le pattern à utilisant ressemblant à (\d{10})

1
Unstagiaire
12 juin 2019 à 15:19
Bonjour jordane,

J'aimerais pouvoir le faire en batch avant d'essayer sur un autre type de programmation.
0
jordane45 Messages postés 38195 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 mai 2024 4 675 > Unstagiaire
12 juin 2019 à 15:27
en bash il existe le findstr
https://www.windows-commandline.com/findstr-command-examples-regular/
un truc du genre
findstr /r "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"  tonfichiertext.txt

https://www.computerhope.com/issues/ch001102.htm
0
Unstagiaire
12 juin 2019 à 15:33
Tu me donnes une bonne piste merci vais voir ce que je peux en faire
0
@echo off
set chemin=(ici j'ai mis le chemin pour trouver mon fichier)

for /f "delims= " %%i in (%chemin%) do (
findstr /r "[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"
)
pause

J'ai besoin de savoir il y a une erreur dans ce programme ?

Il m'indique cette erreur que faire ?

"CMD.EXE a été démarré avec le chemin d’accès comme répertoire en
cours. Les chemins d’accès UNC ne sont pas prise en charge. Utilisation
du répertoire Windows par défaut."
0
Je tiens à préciser, j'ai aussi essayer de mettre le nom de fichier à la fin du findstr mais il me dit que
"FINDSTR : Impossible d'ouvrir (Nom du fichier)"
Du coup je suis un peu perdu :/
Merci de votre aide
0
jordane45 Messages postés 38195 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 mai 2024 4 675
13 juin 2019 à 11:38
Je ne comprend plus trop...
Dans ta question tu nous as indiqué :
J'ai un fichier log

Donc... A quoi sert cette boucle ?

Si tu cherches dans UN FICHIER .. la syntaxe c'est celle que je t'ai donné
findstr /R pattern  filename.txt

et eventuellement, tu peux faire un CD dans ton Batch pour te placer dans le répertoire du fichier en question...
0
Ah mince me suis peut être mal exprimé, je cherche DANS un fichier .log..

Et dans se fichier .log je cherche à ressortir dans une variable, un nombre de 10 caractères.

Et la boucle va me permettre de lire chaque ligne du fichier.
0
jordane45 Messages postés 38195 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 mai 2024 4 675 > Unstagiaire
13 juin 2019 à 12:10
Pourquoi lire CHAQUE ligne ???
Le code que je t'ai donné regarde DIRECTEMENT dans le fichier ..... tout le fichier.....
0
@echo off
dir (chemin du fchier)\XXXXXXXX_PurgeDossiers.log
findstr /r "[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"
pause

On est d'accord c'est ça que tu veux que je fasse ?

Et cela ne me renvoi pas ce que je veux
0
Alors j'ai réussi à bien avancer j'arrive à sortir que les lignes avec un nombre de 10 caractères, avec ce programme :
@echo off
pushd (chemin du dossier)

for /f "delims=" %%i in (monfichier.log) do (
findstr /r "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" monfichier.log
echo Purge du dossier !%%i!
pause
)

Cependant cela m'affiche toute la ligne, alors comment faire pour avoir juste le numéro ?

Exemple :

La purge du dossier XXXXXXXXXX (ici c'est le nombre que je veux extraire) s'est correctement dÚroulÚe

Donc j'aimerais enlever ce qu'il y a avant et après le XXXXXXXXXX.

Merci d'avance de votre aide.
0