Batch pour decouper un fichier txt

Résolu/Fermé
sam0ray Messages postés 28 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 12 août 2010 - Modifié par jipicy le 21/05/2010 à 11:56
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 22 mai 2010 à 07:52
Bonjour,

J'ai vu la solution poster par cs-bilou 8 fév 2010 à 19:03, que je le merci d'abord pour le script, mais je ne sais pas comment l'adapter au mon problème, ma questions est la suite :

1-Je veux découper mon fichier txt de n à la m ème ligne, comment faire?

Merci d'avance pour votre aide.

A voir également:

5 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
21 mai 2010 à 14:15
hello
C:> type f1.txt
1
2
3
4
5
6
7
8
9
10
C:> aa
3
4
5
6

C:> type aa.bat
@echo off

setlocal enableDelayedExpansion
set n=3
set m=6
set c=1
for /f "delims=" %%a in ('type f1.txt') do (
if !c! GEQ %n% if !c! LEQ %m% echo %%a
set /a c+=1
)
C:>
1
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
21 mai 2010 à 16:48
C:> type f1.txt
1
2
3-motcle1
4 blabla
5 blabla
6-motcle2
7

C:> aa
4 blabla
5 blabla

C:> type aa.bat
@echo off

setlocal enableDelayedExpansion
set n=motcle1
set m=motcle2
set /a x=0
set b=1
for /f "delims=" %%a in ('type f1.txt') do (
echo %%a | findstr  "%n%" > NUL
if !errorlevel! EQU 0 ( set /a x=1 & set b=0 )
echo %%a | findstr  "%m%" > NUL
if !errorlevel! EQU 0 set /a x=0
if !x! EQU 1 if !b! EQU 1 echo %%a
set b=1
)
1
sam0ray Messages postés 28 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 12 août 2010
21 mai 2010 à 14:48
Thank you very very much dubcek,
nikel, le scripte marche très bien.
j'ai rajouté >>f2.txt dans le code pour enregistrer le résultat dans un autre fichier f2.txt:
.....
@echo off

setlocal enableDelayedExpansion
set n=3
set m=6
set c=1
for /f "delims=" %%a in ('type f1.txt') do (
if !c! GEQ %n% if !c! LEQ %m% echo %%a>>f2.txt
set /a c+=1
)
.....

je suppose que cette question est close sauf si vous avez une idée (mieux que la mienne) pour implémenter ce scripte dans mon code, la n et la m ème ligne correspond aux numéros de ligne de mot clés dans mon fichier d'origine donc j'ai penser de les stockés dans un fichier à part et dans un deuxième temps je le récupère pour arriver au fichier final je vous donne exemple dessous :

fichier1.txt
1
2
3-mot clé
4 blabla
5 blabla
6-mot clé
7


le résultat que je veux ateindre :

fichier2.txt
4 blabla
5 blabla
0
sam0ray Messages postés 28 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 12 août 2010
Modifié par sam0ray le 21/05/2010 à 19:18
Merci infiniment cher dubcek, c'est bien ce que je cherche.
j'ai un petit souci mais juste la forme des caractères, si je met le mot clé en majuscule il le reconnu pas, mais c'est pas grave.
Bravo Bravo Bravo 1000 fois.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
22 mai 2010 à 07:52
pour ignorer la casse utiliser findstr /i
0