Affichage des résultats 1 à 5 sur 5

Discussion: [PROG] Recherche logiciel de modification automatisée de fichiers textes

  1. #1
    Avatar de Luren
    Luren est déconnecté Barbare des terres gelées
    Date d'inscription
    juin 2010
    Messages 
    555

    [PROG] Recherche logiciel de modification automatisée de fichiers textes

    Quelqu'un connaît-il un logiciel qui permettrait d'ajouter/modifier automatiquement des lignes à un fichier de type texte. J'utilise Search & Replace mais je n'arrive qu'à lui faire rechercher/remplacer des tronçons de texte. Or là, il s'agirait d'ajouter une ligne basée sur une ligne existante, puis de la modifier partiellement.
    Exemple concret :
    map_Kd ../texture/wood.dds

    Il s'agirait de dupliquer cette ligne pour avoir :

    map_Kd ../texture/wood.dds
    map_bump -bm 0.5000 ../texture/wood_n.dds

    Un logiciel comme Search & Replace me permet par exemple de remplacer map_Kd par map_bump -bm 0.5000 et .dds par _n.dds mais je n'arrive pas à lui faire copier/modifier une ligne donnée.

    ... et comme je dois faire l'opération plusieurs centaines de fois, je me disais qu'une procédure automatisée, ce serait plutôt pas mal...

    merci !
    Dernière modification par Luren ; 05/12/2017 à 14h13. Motif: les couleurs foncées sur fond gris, c'est vraiment pourri

    un projet de mod pour Icewind Dale 2

  2. #2
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 688
    Question stupide : as-tu essayé avec WeiDU ? Il gère très bien l'ajout de lignes en fin de fichier (APPEND) et le remplacement de ligne par une ou plusieurs autres (en utilisant les variables %LNL%, %WNL%)
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  3. #3
    Date d'inscription
    juillet 2003
    Localisation
    Plaisir
    Messages 
    6 845
    Ce serait peut-être possible avec notepad++ en utilisant une expression régulière mais il faudrait d'autres exemples de texte d'origine et de ligne à ajouter afin de déterminer un pattern à introduire sous forme d'expression. Se pose aussi la question du texte à insérer dans la copie et qui nécessiterait d'être toujours identique.

    Exemple avec le seul élément connu : remplacer
    (map_)(Kd) (..\/texture\/wood)(\.dds)
    par
    \1\2 \3\4\n\1bump -bm 0.5000 \3_n\4
    en cochant le bouton radio "Expression régulière" dans la fenêtre de remplacement.

    Les séquences \1, \2, etc. font référence au numéro de bloc de texte mis entre parenthèse dans la recherche. On peut donc à l'envie les utiliser ou les ignorer dans le texte de remplacement.
    La difficulté réside dans la généricité qu'il faudra introduire dans au moins les trois premiers textes entre parenthèses (on peut imaginer que .dds ne variera pas, mais cela reste à voir) pour que cela traite toutes les lignes qui t'intéressent.
    Même si ce processus pourrait parfaitement s'automatiser (Remplacer tout), il te vaudra mieux les valider un par un en vérifiant que l'expression régulière aura bien attrapé le "bon" texte (notepad++ surligne le texte trouvé).
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  4. #4
    Avatar de Luren
    Luren est déconnecté Barbare des terres gelées
    Date d'inscription
    juin 2010
    Messages 
    555
    Merci de vos réponses !

    @Freddy : J'ignorais que l'on pouvais utiliser Weidu comme une application indépendante, et je n'ai pas de connaissances suffisantes pour lui faire faire ce que je voudrais qu'il fasse...difficile donc pour moi de mettre en pratique ton idée.

    @Isaya. Merci des pistes que tu me donnes. J'utilise notepad++ et j'utilise souvent sa fonction de recherche/remplacement, mais pas avec les expressions régulières. Je vais creuser la question.
    Pour ce que je veux faire, les infos que tu me communiques correspondent parfaitement aux textes à rechercher remplacer. Le truc sur lequel je bute, c'est la duplication automatisée d'une ligne. Pour reprendre l'exemple que j'ai donné, il s'agit d'ajouter une ligne avec de nouvelles entrées, mais comme j'obtiens par duplication 2 lignes identiques, il est nécessaire d'ajouter un marqueur ou de modifier à la volée la ligne que je duplique, afin que lors de l'opération de recherche/remplacement seule un ligne sur les deux soit modifiée.

    Ci-dessous un exemple d'un fichier .mtl avant/après modification
     Cliquer ici pour révéler le texte


    Ce type de fichier accompagne les fichiers .obj, et contient les paramètres (basiques) des matériaux associés à des modèles 3D. Dans mon exemple je souhaite simplement ajouter, pour chaque matériau, une ligne correspondant aux fichiers bump servant à donner un effet de relief à une texture. Pour ne pas se mélanger les pinceaux, les fichiers ont la même dénomination que les textures, avec juste le _n (n pour normal). J'indique aussi une valeur (-bm 0.5000) correspondant à l'intensité de l'effet de relief.
    Edit : Ah oui, et la ligne KS 0.000000 0.000000 0.000000, correspond à la modification d'un effet lumineux associé à la texture.
    Dernière modification par Luren ; 08/12/2017 à 16h42. Motif: noitacifidom ed fitoM

    un projet de mod pour Icewind Dale 2

  5. #5
    Avatar de Luren
    Luren est déconnecté Barbare des terres gelées
    Date d'inscription
    juin 2010
    Messages 
    555
    J'ai trouvé la réponse !

    Avec Notepad++ :
    Recherche :
    map_Kd\s+(\S+)\.dds
    ou
    (map_)(Kd)(\s+\S+)(\.dds)
    Remplacer par :
    map_Kd \1.dds\nmap_bump -bm 0.4000 \1_n.dds
    ou
    \1\2\3\4\n\1bump -bm 0.4000\3_n\4
    Le truc, c'est qu'au lieu d'ajouter une ligne, on la remplace par deux lignes. Une qui recopie l'originale (map_Kd \1.dds), suivie d'un retour à la ligne (\n) puis de l'écriture de la seconde ligne (map_bump -bm 0.4000 \1_n.dds)
    Le répertoire (comme ../texture/wood.dds de l'exemple), qui peut être variable, par le nom de la texture et son emplacement, est repéré lors de la recherche par \s+(\S+) , c'est à dire un espace (\s) de longueur variable (+) suivi d'un non espace (\S), c'est à dire des caractères, de longueur variable (+). Sa mise entre parenthèse permet de l'appeler lors du remplacement (via \1)


    Merci Isaya
    Dernière modification par Luren ; 09/12/2017 à 17h04.

    un projet de mod pour Icewind Dale 2

Discussions similaires

  1. Recherche de logiciel de manip d'image
    Par Galathée dans le forum Informatik'
    Réponses: 3
    Dernier message: 13/09/2017, 18h53
  2. Réponses: 7
    Dernier message: 20/07/2017, 20h49
  3. Réponses: 4
    Dernier message: 11/06/2016, 10h41
  4. Réponses: 5
    Dernier message: 25/08/2014, 20h22
  5. Réponses: 8
    Dernier message: 15/11/2012, 15h51

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251