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‚
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 )
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
× 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.
Créateur de scripts d'automatisation en tout genre