Comment trouver une chaîne de caractère que l'on ne connaît avec un fichier .bat
Résolu
Unstagiaire
-
Unstagiaire -
Unstagiaire -
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.
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:
- 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.
- Creer un fichier .bat - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Caractère ascii - Guide
3 réponses
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})
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})
@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."
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."
Je ne comprend plus trop...
Dans ta question tu nous as indiqué :
Donc... A quoi sert cette boucle ?
Si tu cherches dans UN FICHIER .. la syntaxe c'est celle que je t'ai donné
et eventuellement, tu peux faire un CD dans ton Batch pour te placer dans le répertoire du fichier en question...
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...
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.
@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.
J'aimerais pouvoir le faire en batch avant d'essayer sur un autre type de programmation.
https://www.windows-commandline.com/findstr-command-examples-regular/
un truc du genre
https://www.computerhope.com/issues/ch001102.htm