Page 1 sur 1

Modification fichier.

Posté : 20 mars 2008 13:53
par junkou
Une question simple.

est il possible de modifier des fichiers en batch ?
je donne un exemple.
le but est de remplacer qqchose dans un fichier (comme d habitude quoi :D ) à un endroit bien precis.

exemple fichier origine

Code : Tout sélectionner

.....
Machin = truc
Bidule = truc
.....
 
fichier resultat final

Code : Tout sélectionner

.....
Machin = trucNouveau <= y a que là que ca change
Bidule = truc
.....
 
tous le fichier est composé de "info = valeur".

ma question n'implique pas la creation du code. je veux pas le resultat du batch. je voudrais savoir comment faire ... juste un tuyau pour commencer :D . j ai bien compris pour Find et For. mais c est le remplacement qu'il me manque. est ce que je dois passer par des fichier temporaire ? mais meme là je vois pas comment faire
autre contrainte. Je ne peux pas rajouter de programme comme "Switch" par exemple j ai que du dos de base utilisable (OS = NT)

Re: Modification fichier.

Posté : 20 mars 2008 13:55
par junkou
:o Oups, dans ma fougue des recherches j ai oublié.

BONJOUR et bravo pour le site Tres bien fait et explications tres claire.

Re: Modification fichier.

Posté : 20 mars 2008 20:24
par flox
;) ,

Bonjour Junkou,

A ton problème j'ai trouvé je pense une solution, elle se décompose en 2 batchs.

c:\test.bat ton premier script

Code : Tout sélectionner

@echo off
rem pour chaque ligne du fichier c:\temp.txt tu appelle le bat c:\switch.bat et tu lui passe en paramètre la ligne 
FOR /f "delims=" %%a IN (c:\temp.txt) DO (call c:\switch.bat "%%a")
rem tu supprime le fichier original c:\temp.txt
del c:\temp.txt
rem et tu renomme le nouveau fichier par l'ancien
ren c:\temp2.txt temp.txt
c:\switch.bat ton deuxième script

Code : Tout sélectionner

@echo off
rem tu stock le paramètre %1 dans la variable %var%
set var=%1
rem tu supprime les guillemet de chaque coté de la variable %var%
set var=%var:~1,-1%
rem tu remplace dans la ligne le terme truc par trucNouveau
set var=%var:truc=trucNouveau%
rem tu enregistre la nouvelle ligne dans un fichier temporaire nommé temp2.txt
echo %var%>>c:\temp2.txt
c:\temp.txt ton fichier source

Code : Tout sélectionner

Machin = truc
Bidule = truc
Après le passage de la moulinette:

Code : Tout sélectionner

Machin = trucNouveau
Bidule = trucNouveau
Voila j'espère que cela répond à ta problématique.

@+

Re: Modification fichier.

Posté : 25 mars 2008 12:02
par Junkou
Merci pour ton aide, je test ça. et même si c'est aps bon cela me donne une bonne piste de recherche....
Je te tiens au courant d'un résultat ???

Re: Modification fichier.

Posté : 26 mars 2008 12:44
par junkou
J ai une soluce

le fichier de départ c'est un truc comme ça et on appelera ce fichier from.txt

Code : Tout sélectionner

**************************************
*
* Debut du fichier FROM
*
** Info générale
Nom=Mon Nom
Prenom= Mon prenom
** info bio
Lataille=170
lepoids=70
*
* FIN fichier
*
***************************************
 
code le traitant ca donne ça

Code : Tout sélectionner

@echo off
cls

del out.txt

set NouvTaille=192

for /F "tokens=1,2* delims==" %%i in (from.txt) do call :OKDOK "%%i" "%%j"
copy /y out.txt from.txt
del out.txt
pause
goto :eof

:OKDOK
if %2 NEQ "" set out=%~1=%~2
if %1 EQU "Lataille" set out=Lataille=%NouvTaille%
if %2 == "" set out=%~1
echo %out% >> out.txt
goto :eof
 
vous en pensez quoi ?
ça fonctionne mais je trouve qu'il y a quelque chose qui cloche mais j arrive pas a voir quoi.

Re: Modification fichier.

Posté : 27 mars 2008 21:04
par flox
Pour moi sa semble bon,
peut tu préciser les éventuels bugs qui tu rencontre ?


Merci

Re: Modification fichier.

Posté : 12 avr. 2008 11:04
par junkou
:D Ben justement j ai pas de bug et c'est ça qui me surprend. enfin sauf que s il y a des lignes vides dans mon fichier d'entré(From) je ne les retrouve pas dans mon fichier de sortie et je ne vois pas comment faire :mrgreen:
Mais bon si tous semble bon, alors mon problème semblerai résolu.

Merci pour l 'aide :D