Menu

Programation batch

piv0t 12 Messages postés vendredi 6 juillet 2018Date d'inscription 17 juillet 2018 Dernière intervention - 8 juil. 2018 à 07:48 - Dernière réponse : piv0t 12 Messages postés vendredi 6 juillet 2018Date d'inscription 17 juillet 2018 Dernière intervention
- 8 juil. 2018 à 21:34
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
)
)

Afficher la suite 

Votre réponse

8 réponses

barnabe0057 12066 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 18 juillet 2018 Dernière intervention - 8 juil. 2018 à 10:30
0
Merci
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
)
)

barnabe0057 12066 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 18 juillet 2018 Dernière intervention > piv0t 12 Messages postés vendredi 6 juillet 2018Date d'inscription 17 juillet 2018 Dernière intervention - 8 juil. 2018 à 21:14
Ok super.
piv0t 12 Messages postés vendredi 6 juillet 2018Date d'inscription 17 juillet 2018 Dernière intervention - 8 juil. 2018 à 21:25
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
piv0t 12 Messages postés vendredi 6 juillet 2018Date d'inscription 17 juillet 2018 Dernière intervention - 8 juil. 2018 à 21:26
voici le fichier de test:

qqqqqqqqqqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrrrrrrrrr
vvvvvvvvvvvvvvvvvvvvvvv
@
bbbbbbbbbbbbbbbbbbbbbbbb
@
dddddddddddddddddddddd
@
ssssssssssssssssssssssssss
@
aaaaaaaaaaaaaaaaaaaaaaaaa qqqqqqqq
aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
@
ffffffffffffffffffffffff
@
finfinfinfinfifnfifnfinfnifnffifnififnfnfin
@
piv0t 12 Messages postés vendredi 6 juillet 2018Date d'inscription 17 juillet 2018 Dernière intervention - 8 juil. 2018 à 21:27
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
piv0t 12 Messages postés vendredi 6 juillet 2018Date d'inscription 17 juillet 2018 Dernière intervention - 8 juil. 2018 à 21:34
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
Commenter la réponse de barnabe0057