Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

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

Un problème sur votre ordinateur, votre système d'exploitation ou sur Internet ? Des conseils à demander ou à proposer concernant les derniers logiciels disponibles ? Des astuces ou des guides à proposer sur comment nettoyer / optimiser son ordinateur ? Ce forum est le lieu idéal pour parler de nos machines et des programmes autres que les jeux. Débats, sondages, astuces... sans oublier l'annuaire regroupant des liens de sites par thèmes.
Répondre
Avatar du membre
Luren
Adepte de Grondemarteau
Ver charognard
Messages : 656
Enregistré le : dim. 20 juin 2010, 08:51
Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
Statut : Hors ligne

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

.

Message par Luren »

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 !
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

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...
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

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 !
Avatar du membre
Luren
Adepte de Grondemarteau
Ver charognard
Messages : 656
Enregistré le : dim. 20 juin 2010, 08:51
Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
Statut : Hors ligne
.

Message par Luren »

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
► Afficher 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.
Avatar du membre
Luren
Adepte de Grondemarteau
Ver charognard
Messages : 656
Enregistré le : dim. 20 juin 2010, 08:51
Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
Statut : Hors ligne
.

Message par Luren »

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
Répondre

Retourner vers « Informatik' »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 11 invités