Programation batch [Fermé]

Signaler
Messages postés
12
Date d'inscription
vendredi 6 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018
-
Messages postés
12
Date d'inscription
vendredi 6 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018
-
Bonjour, coordialement

merci pour votre aide j'ai un probleme qui me frappe :

j'ai une liste de fichiers nommes doc1.txt, doc2.txt, doc3.txt .... doc10.txt
j'aimerais par la boucle for parcourrir chacun de ces fichier et supprimer la ligne contenant la lettre a .

mais je sais pas comment m'y prendre si quelau'un a quelque chose a me proposer je serais tres ravi, merci

voici ce que j'ai fait:

for /l %%z in (0,1,%nbfic%) do (
 if exist "doc%%z.txt" (
  findstr /v "@" doc%%z.txt > docc!z!.txt
)
)

1 réponse

Messages postés
13546
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 juin 2021
4 400
Bonjour,

Voilà la solution :

for /l %%z in (1,1,%nbfic%) do (
if exist "doc%%z.txt" (
(for /f "tokens=1,* delims=:" %%A in ('findstr /n /v "@" doc%%z.txt') do (echo(%%B)) >docc%%z.txt
)
)

Messages postés
13546
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
19 juin 2021
4 400 >
Messages postés
12
Date d'inscription
vendredi 6 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018

Ok super.
Messages postés
12
Date d'inscription
vendredi 6 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018

mais j'ai un autre petit soucis dans mon programme je vous envoi les fichiers sources et s'il ya une anomalie veuillez s'il vous plait me corriger

d'abord voici le manuel d'utilisation de mon programme il explique ce que fait ce dernier:

Manuel d'utilisation:

ce programme vous permet de diviser un fichier donc les lignes sont separees par un signe que nous appelerons le "delimiteur de lignes" ici c'est le "@", en plusieurs fichiers contenant chacun toutes les lignes avant ou apres le delimieur;

pour ce faire:
- ouvrer le fichier en mode "ecriture";

- aller a la ligne 14 puis changer le delimiteur "@" si vous utiliser un autre;

- aller ensuite a la ligne 22 et 30 modifier le nom de votre fichier que vous voulez diviser dans les parenthes , ici (pivo.txt);

- enregistrer puis ferrmer;

- executer enfin le programme

NB: les fichiers de sortie sont nommes "fichier1" jusqu'a "fichier-n", avec n le nombre total de fichiers crees determines par le nombre de delimiteur +1 car le dernier fichier est vide preuve que la division a bien ete effectuee et qu'on a atteind la fin du fichier principale.
vous pouvez toute fois changer le nom des fichiers de sortie pour cela aller a la ligne 52 et moodifier fichier dans fichier%%z.txt

faites-en bonne usage


version du script 0.1
programmeur piv0t@iut
Messages postés
12
Date d'inscription
vendredi 6 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018

voici le fichier de test:

qqqqqqqqqqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrrrrrrrrr
vvvvvvvvvvvvvvvvvvvvvvv
@
bbbbbbbbbbbbbbbbbbbbbbbb
@
dddddddddddddddddddddd
@
ssssssssssssssssssssssssss
@
aaaaaaaaaaaaaaaaaaaaaaaaa qqqqqqqq
aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
@
ffffffffffffffffffffffff
@
finfinfinfinfifnfifnfinfnifnffifnififnfnfin
@
Messages postés
12
Date d'inscription
vendredi 6 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018

et voici le code source proprement dit:

@echo off
rem version du script 0.1

echo ============================
echo / CREATEUR DE FICHIERS /
echo / v 0.1 /
echo ============================
echo(%emptyvalue%
echo(%emptyvalue%
echo(%emptyvalue%
echo(%emptyvalue%

set c=1
set delimiteur=@
set ligne=0
set nbfic=1

setlocal enabledelayedexpansion

rem variables deja utilisees:A, c, delimiteur, ligne, nbfic, i, x, y,z

for /f "delims=eol" %%x in (pivo.txt) do (
if "%%x"=="@" set /a nbfic+=1
)
echo vous aurez !nbfic! fichiers
echo(%emptyvalue%

if exist fichier*.txt del fichier*.txt

rem ================= lecture du fichier initial et transfert de donnees ======================================
for /f "delims=eol" %%i in (pivo.txt) do (
set ligne=%%i
if "%%i"=="%delimiteur%" (
set ligne=0
set /a c+=1
)
echo %%i >>"doc!c!".txt
)

rem ============================================================================================================

rem ================= mise en forme des fichiers finals ========================================================
for /l %%z in (1,1,%nbfic%) do (
if exist "doc%%z.txt" (
for /f "tokens=1,* delims=:" %%A in ('findstr /n /v "@" doc%%z.txt') do (echo(%%B)) >fichier%%z.txt
rem findstr /v "@" doc%%z.txt > docc!z!.txt
echo le fichier%%z a ete cree avec succes
)
)
echo(%emptyvalue%


if exist doc*.txt del doc*txt
if exist "*.txt" (
echo vote fichier a ete divise avec succes!
echo Merci d'avoir utilise ce programme!
echo(%emptyvalue%
echo(%emptyvalue%

)
rem ================================================================================================
endlocal

pause
Messages postés
12
Date d'inscription
vendredi 6 juillet 2018
Statut
Membre
Dernière intervention
17 juillet 2018

un probleme que mooi je mentionne est que lorsqu'on modiffie le fichier de test pivo.txt par exemple en utilisant le fichier readme.txt comme fichier de test on ajoute des @ apres les lignes mais ca ne marche plus