[Batch] Rechercher caractères dans un fichier ...
Forum Programmation : [Batch] Rechercher caractères dans un fichier ...
Salut
Voila, je suis "débutant" (
) en batch et j'aimerais qu'un programme me recherche des mots dans un fichier.
J'ai donc trouvé la commande find
Pour comprendre mon problème, j'explique ce que j'essaye de faire :
Sur le jeu LineRider, on crée des pistes ... Elles sont enregistrées sur le disque dur sous forme : savedLines.sol
Mais voila, je veux faire un programme permettant de "déchiffrer" ces fichiers et d'indiquer le nom des pistes inclues dedans.
Problème, c'est l'utilisateur qui choisis le nom des pistes
Donc je ne les connais pas et ne peut pas faire de recherche
J'ai regardé un peu ces fichier .sol en les ouvrant avec le bloc note.
J'ai remarqué que les pistes sont enregistrées comme ça :
label Nom de la piste 3 (En fait c'est la sauvegarde n°3 ici) version
Donc voila, comment faire
Merdi de votre aide
PS : Si quelqu'un à compris, je lui dit bravo
Un petit Up !
Bon, je récapitule et je modifie un peu ma question :
- Afficher une ligne précise d'un fichier
(Ex : Afficher la ligne 27 de fichier.txt)
Autre question :
- Est-il possible de faire un truc dans le genre :
@echo off
echo ( ligne1
ligne2
ligne3
ligne4 ) > Fichier2.txt
Au lieu de :
@echo off
echo ligne1 >> Fichier2.txt
echo ligne2 >> Fichier2.txt
echo ligne3 >> Fichier2.txt
echo ligne4 >> Fichier2.txt
??
Merci de vos (futures) réponses
Pour ta première question,
Il est écrit Ligne 27 a la 27ème ligne ?
Pour le deuxième:
@echo off
for %%i in ( ligne1, ligne2, ligne3, ligne4 ) do echo %%i >> C:\fichier2.txt
pause
Message édité par liblabrute le 27-07-2008 à 21:04:47
Merci pour ta réponse ;-)
Pour la première question :
1°) Non je demande juste que la ligne n°27 s'affiche.
OU
2°) J'ai le mot "label" à la ligne 27 et je veux l'afficher
Mercii
[Edit] J'ai testé le code pour copier les lignes et ça me sort :
Code :
|
Message édité par Lptop le 28-07-2008 à 12:45:28
C'est reparti pour les up's xD
Désolé j'étais absent.
Pour ta première question je fais des test en faisant des boucles for.
Pour la deuxième tu fais Clique droit sur ton *.bat et clique sur executer en mode administrateur.
A+
Il y a des lignes après la ligne 27 ?
Pour ta première question voilà la solution:
@echo off
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type Test.txt') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a
)
endlocal
source:
http://astase.com/forums/viewtopic.php?id=3071
Salut, merci de tes réponses ;-)
Ensuite, oui, il y à des lignes après la ligne 27.
Merci, le code marche pour :
Code :
|
Mais l'autre code, j'arrive pas
Tu peux me dire ce qu'il faut que je modifie pour afficher la ligne 10 du fichier "salut.txt" (par exemple) ?
Code :
|
En tout cas, merci :-)
De rien c'est un plaisir
Alors ton fichier texte se nomme comment et il est dans quel répertoire ?
A+
Mon fichier texte se nomme savedLines.txt et se trouve dans C:\LineRider\
Et exactement, c'est la ligne 217
Alors tu fais
@echo off
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type C:\LineRider\savedLines.txt') Do (
Set /A compt +=1
If !compt! GEQ 217 If !compt! LEQ 217 Echo %%a
)
endlocal
echo.
pause>NUL
A+
EDIT: J'ai testé, ça fonctionne
EDIT 2: C'est la ligne 217 ou la 27 ?
Si c'est la 27 voilà le code
@echo off
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type C:\LineRider\savedLines.txt') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a
)
endlocal
echo.
pause>NUL
Message édité par liblabrute le 01-08-2008 à 16:34:17
Bah pas chez moi
J'ai Vista, ça change quelque chose ?
Parce que là, j'ai rien qui se passe ...
Le fichier s'ouvre et se bloque, un "curseur" clignote et si j'appuie sur une touche, le programme se ferme -.-'
C'est la ligne combien ?
Hein ?
Comment ça ?
De toute facon, peu importe la ligne
Non ?
Bah ligne 27 ^^
Code :
|
Non, ça ne marche pas, c'est pas à cause de Vista ?
Fais en mode administrateur pour voir
Pareil
Tu donne quelle extention a ton batch ?
Copie ça dans ton batch
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type C:\LineRider\savedLines.txt') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a > C:\savedLines.txt
)
endlocal
start C:\savedLines.txt
à la fin une fenêtre s'ouvre, copie son contenu dans ta prochaine réponse.
A+
Message édité par liblabrute le 01-08-2008 à 17:12:11
Bah, l'extension, c'est .bat
J'ai créé un fichier savedLines.txt pour le test avec dedans :
Code :
|
Je lance le fichier .bat
Windows ne trouve pas le fichier C:\savedLines.txt -_-'
Je change C:\savedLines.txt en C:\LineRider\savedLines.txt
Waow ! Ca marche !!
Ya un fichier texte qui s'ouvre avec marqué "azerty 27"
Donc la 27è Ligne !!
Waow super merci bcp !
Mais ça ne résoud pas mon problème
J'ai testé le programme sur le vrai fichier et je me rend compte qu'en fait la Ligne 27 s'étale sur une centaine de ligne dans le fichier texte
Comment ca ?
Je ne comprends pas
c'est super simple regarde,
Copie ca dans un *.bat
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type C:\LineRider\savedLines.txt') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a > C:\savedLines.txt
)
endlocal
start C:\savedLines.txt
Et tu me colle ce qu'il y a de manqué dans la fenêtre qui s'ouvre
A+
Windows ne trouve pas C:\savedLines.txt etc... -_-'
lol je vais me pendre
Message édité par Lptop le 01-08-2008 à 19:30:46
Fais le en mode administrateur
J'ai changé d'ordi (jsuis sur celui de mon père mais c'est le même chemin, mêmes noms de fichier et tout) mais c'est windows XP et je sais pas comment faire ^^
Que ne sais tu pas faire ?
Mode Administrateur ...
Sous xp tu n'as pas besoin si tu est connecté sous un compte administrateur
Je reviens sous vista ...
J'exécute en tant qu'Administrateur...
Que te dis ce code ?
@echo off
if exist "C:\LineRider\savedLines.txt" ( echo trouv, ) else ( echo non trouv, )
pause
Copie colle dans un batch et dis moi ce qu'il t'affiche à l'écran stp.
Message édité par liblabrute le 02-08-2008 à 06:55:51
Code :
|
Bizzarre, chez moi ca marche
Ce fichier tu pourrais l'afficher sur le forum ?
En spoileur pour que ca prenne moins de place
A+
Essayes avec ce code:
@echo off
cd "%systemdrive%\LineRider\"
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type savedLines.txt') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a
)
endlocal
pause
Ca te sors la bonne ligne ?
Alors ?
Non, ça ne me sors rien
Le fichier en spoiler :
PS : C'est pas un fichier normal
Ca veut rien dire, c'est un fichier .sol normalement xD
| Spoiler : ¿ q“TCSO
|
Message édité par Lptop le 03-08-2008 à 20:14:45
Ahh
Mais ton fichier est en faites un fichier sol ?
Oui, mais je l'ai changé en .txt pour pouvoir faire ce que tu me disais ...
Remets le en *.sol
Puis prends ce code:
@echo off
cd "%systemdrive%\LineRider\"
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type savedLines.sol') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a
)
endlocal
pause
Code :
|
Ça commence à me gonfler
et si tu renomme en .txt
Sans modifier le code ?
Code :
|
Je pense que ca va marcher:
@echo off
cd "%systemdrive%\LineRider\"
Set compt=
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type savedLines.txt') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a
)
endlocal
pause
Hum.....
Code :
|
MAIS ! C'est le fichier qui à un problème !
Parce que j'ai remplacé ce fichier par un autre et ça marche impeccable !
Je sais pas ce qu'il y a
@echo off
cd "%systemdrive%\LineRider\"
Set compt=0
setlocal enableDelayedExpansion
FOR /F "Tokens=*" %%a in ('Type savedLines.txt') Do (
Set /A compt +=1
If !compt! GEQ 27 If !compt! LEQ 27 Echo %%a
)
endlocal
pause
et ca ca marche ?
Euh... tu sais quoi ?
En fait, je pense tout simplement qu'il y a pas 27 lignes ... Peut être que c'est tellement long que ça s'affiche sur plusieurs lignes, mais peut être que c'est qu'une seule ligne ....
Parce que ... Ce code sur un autre fichier marche sans problème ...
Sur mon ordi la ligne 27 s'affiche mais, sur 2 lignes
et avec ton fichier
Bah euh .... Alors la, je comprend plus ...
Je fais copier les caractères de mon fichier que j'avais mis en spoiler, je les colle dans le fichier savedLines.txt et... Ca marche... oO
Reste plus qu'a régler ce problème ...
En tout cas, je te remercie beaucoup pour ce code, et ce que tu as fait :-)
Si j'ai de nouveau besoin, je poste ici
Régler quel problème ?
De rien je me suis moi même améliorer grâce a ce poste
A+
Il y a 2912 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
