Partage
  • Partager sur Facebook
  • Partager sur Twitter

Extraire chaine de charactere d'un fichier

    18 mars 2019 à 16:56:01

    Bonjour à tous, je dispose actuellement d'un fichier (Filters.def) avec une structure comme ceci(ci-dessous) et j'aimerais extraire ce qu'il y'a entre begin et end et le coller dans un nouveau fichier qui sera renommé par le 1er titre, en sachant que je doit créer un nouveau fichier pour chaque begin end, mon fichier contient plus de 900 begin end d'ou j'aimerais un script, merci encore de votre aide:

    J'ai fait ce code mais il fonctionne pas car il fait que recopier le contenu de Filters.def dans un seul fichier.

    @echo off&cls
     
    Echo traitement en cours....
    setlocal enabledelayedexpansion
     
    for /f "tokens=1* delims= " %%a in (Filters.def) do (
         if /i "%%a"=="begin" set $file=%%b.txt
         if not "%%a"=="end" echo %%a %%b>>"!$File!"
    )
    Echo termin‚



    begin

    titre:texte

    titre2:texte

    titreN:texte

    end

    begin

    titre:texte

    titre2:texte

    titreN:texte

    end

    begin

    titre:texte

    titre2:texte

    titreN:texte

    end

    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2019 à 20:39:52

      Bonjour,

      Je t'ai réalisé un script avec AutoIt qui fait ce que tu demandes, mais je ne suis pas certain que ce soit bien ce que tu attends (ton exemple aurait pû être parfait, si tu nous indiquais ce que tu es censé avoir en retour avec ce texte ;))

      Le script est téléchargeable ici:
      http://pc-facile13.overblog.com/telechargements-temporaires

      Au lancement, il te sera demandé de sélectionner :
      1- Le fichier def
      2- Le répertoire dans lequel tu souhaites que les fichiers txt soient créés

      Je te conseille de faire un premier test avec un fichier "allégé" (contenant quelques Begin/End), histoire de voir si le résultat est le bon.

      Voici la source du script:

      #include <String.au3>
      
      $sFileSourcePath = FileOpenDialog("Veuillez sélectionner le fichier source","","All (*.*)",1,"Filters.def")
      If @error Then Exit
      
      $sNewFilesPath = FileSelectFolder ("Veuillez sélectionner le chemin de destination des fichiers créés","",2)
      If @error Then Exit
      
      If StringCompare(StringRight($sNewFilesPath,1),"\") <> 0 Then $sNewFilesPath &= "\"
      
      ;On récupère le contenu du fichier "def"
      $sFileContent = FileRead($sFileSourcePath)
      
      ;On extrait le contenu entre les "Begin" et les "End" dans un tableau
      $aBeginEnd =  _StringBetween($sFileContent,"begin","end")
      
      ;Si le tableau contient bien des entrées
      If IsArray($aBeginEnd) Then
      	For $i=0 To UBound($aBeginEnd)-1
      		_createFile($aBeginEnd[$i])
      		;Petite pause pour éviter de saturer le processeur
      		Sleep(10)
      	Next
      	MsgBox(64,"Fin","Traitement terminé.")
      Else
      	MsgBox(16,"Erreur",'Le fichier ne contient aucun "Begin/End".')
      EndIf
      
      
      ;Fonction permettant d'extraire le titre, de créer le fichier et d'y insérer le contenu
      Func _createFile($sContentText)
      	;On extrait le titre
      	$aTitre = _StringBetween($sContentText,"titre:",@CRLF)
      
      	If IsArray($aTitre) Then
      		;On crée le fichier et on y insère le texte
      		FileWrite($sNewFilesPath & $aTitre[0] & ".txt",$sContentText)
      	EndIf
      EndFunc

      -
      Edité par Blaster13 18 mars 2019 à 20:46:32

      • Partager sur Facebook
      • Partager sur Twitter
        19 mars 2019 à 9:09:16

        Finalement j'ai réussi, problème réglé

        Merci pour vos aides

        -
        Edité par bylka423 19 mars 2019 à 19:49:29

        • Partager sur Facebook
        • Partager sur Twitter

        Extraire chaine de charactere d'un fichier

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown