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
) à un endroit bien precis.
exemple fichier origine
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
. 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
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
Après le passage de la moulinette:
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
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
Mais bon si tous semble bon, alors mon problème semblerai résolu.
Merci pour l 'aide