Traitement de fichier TXT

RALOU521901 Messages postés 6 Statut Membre -  
 Yoda -
J'ai consulté le forum mais les réponses trouver à mon problème ne fonctionnent guère (trop ancienne peut etre?)

J'ai plusieurs fichiers texte dans un répertoire (en fait ce sont des écritures comptables prêtent a être récupérées par un logiciel comptable), manquent de pot , certains comptes sont mal paramétrés et je voudrais modifier certains comptes par un autre)
exemple
dans mes fichiers j'ai la suite de caractères "53000013" que je voudrais remplacer par "5301300" dans tous les fichiers texte
Comment faire (un .bat) ? pour que le remplacement s'execute sur tous les fichiers avec extension .txt ?

Merci a tous

2 réponses

  1. khetsuro Messages postés 112 Statut Membre 10
     
    Essai ceci

    find.bat :

    @echo off
    REM -- Prepare the Command Processor --
    SETLOCAL ENABLEEXTENSIONS
    SETLOCAL DISABLEDELAYEDEXPANSION

    ::BatchSubstitude - parses a File line by line and replaces a substring"
    ::syntax: BatchSubstitude.bat OldStr NewStr File
    :: OldStr [in] - string to be replaced
    :: NewStr [in] - string to replace with
    :: File [in] - file to be parsed
    :$changed 20100115
    :$source https://www.dostips.com/
    if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
    for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
    set "line=%%B"
    if defined line (
    call set "line=echo.%%line:%~1=%~2%%"
    for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
    ) ELSE echo.
    )


    Ouvre une invite de commande avec le chemin où t'es fichiers texte ainsi que le programme en batch est situé.

    Et écrit

    find.bat "53000013" "5301300" "tonfichiertext.txt">"nouveaufichier.txt"

    Source
    0
    1. RALOU521901 Messages postés 6 Statut Membre
       
      Y a un truc ca ne marche pas
      Mon fichier de départ
      C05201114OD4675000000 000000359 ANEM VT 20/11/14 A201114D00000000000000000.00N
      C05201114OD4675000000 AANEM 000000359 ANEM VT 20/11/14 A D00000000000000000.00N
      C05201114OD5111000000 000000359 ANEM VT 20/11/14 C201114D00000000000000977.80N
      C05201114OD5111000000 AANEM 000000359 ANEM VT 20/11/14 C D00000000000000977.80N
      C05201114OD5113000000 000000359 ANEM VT 20/11/14 C201114D00000000000000114.97N
      C05201114OD5113000000 AANEM 000000359 ANEM VT 20/11/14 C D00000000000000114.97N
      C05201114OD5300000013 000000359 ANEM VT 20/11/14 E201114D00000000000000829.67N
      C05201114OD4457110000 000000359 ANEM VT 20/11/14 201114C00000000000000320.26N
      C05201114OD7071000000 000000359 ANEM VT 20/11/14 201114C00000000000001602.18N

      quand j'applique ton batch, fichier de sortie, que des lignes comme ceci

      c:\temp>find.bat :

      C:\temp>find.bat :

      C:\temp>find.bat :

      C:\temp>find.bat :

      C:\temp>find.bat :

      ?????
      0
      1. khetsuro Messages postés 112 Statut Membre 10 > RALOU521901 Messages postés 6 Statut Membre
         
        Je t'ai fait un exemple avec ton fichier de départ, j'ai changer les premiers numéro de la liste

        Regarde ici
        0
  2. RALOU521901 Messages postés 6 Statut Membre
     
    Merci, je vais essayer.
    Par contre trés intéressant le site que tu mentionnes www.dostips.com
    J'en profites..si le batch fonctionne correctement est ce qu'il est possible de remplacer un groupe de compte par un autre.
    (exemple 5300000013 en 5300001300 puis le 5300000012 en 5300001200 ?

    MERCI
    0
    1. khetsuro Messages postés 112 Statut Membre 10
       
      Oui suffit de refaire la même manip avec le nouveau fichier texte

      find.bat "5300000012" 5300001200" "nouveaufichier.txt">"nouveaufichier2.txt"
      0
    2. RALOU521901
       
      Merci KHETSURO, mais ton exemple ne donne rien , ou t'as pas bien regardé ce que tu sors!!.
      et ta ligne de commande est farfelue !
      Y a quelqu'un derriere ce pseudo ou c'est juste pour animer le tchat ?
      0
    3. Yoda > RALOU521901
       
      Bonjour,

      Excuses-moi, mais le .bat fonctionne bien, je l'ai essayé. Je crois que tu t'y prends mal.
      Expliques comment tu fais.
      0
    4. RALOU521901 > Yoda
       
      Hi Yoda
      Ben j'ai créer mon .Bat avec NotePAD, je l'ai placé dans le repertoire où y 'a mes fichiers TXT, puis je tape la commande find.bat etc..(peut etre y a des espaces à respecter ??)

      Voila...
      0
    5. RALOU521901
       
      @Yoda
      si tu regardes l'exemple que me donne KHETSURO en cliquant sur son lien, tu vois bien que le fichier de départ est exactement le meme que le fichier d'arrivée , et que dans sa ligne de commande y a des numéros de comptes qui n'existent pas dans le fichier de départ... donc sa ligne de commande ne peut rien faire..c'est pour cela que j'ai dit que c'était farfelu..
      0