Chercher et remplacer
Résolu/Fermé
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
-
24 févr. 2020 à 12:08
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 5 mars 2020 à 13:18
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 5 mars 2020 à 13:18
A voir également:
- Chercher et remplacer
- Rechercher et remplacer word - Guide
- Remplacer disque dur par ssd - Guide
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
- Remplacer tete sur photo - Guide
- Remplacer carte graphique - Guide
7 réponses
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
24 févr. 2020 à 14:02
24 févr. 2020 à 14:02
J'avance un peu... Mais pour l'instant, je parviens seulement à remplacer un mot dans mon fichier:
@echo off
setlocal enabledelayedexpansion
set "Chercher=b_tab1"
set "Remplacer=mot"
set FichierTexteAremplacer=D:\dossier\fichier.txt
set NouveauFichierTexte=D:\dossier\fichier_new.txt
for /f "tokens=1,* delims=¶" %%A in ( '"type !FichierTexteAremplacer!"') do (
SET string=%%A
SET modified=!string:%Chercher%=%Remplacer%!
echo !modified! >>%NouveauFichierTexte%
)
del !FichierTexteAremplacer!
move !NouveauFichierTexte! !FichierTexteAremplacer!
exit
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
Modifié le 24 févr. 2020 à 21:20
Modifié le 24 févr. 2020 à 21:20
Au cours de mes recherches, je suis tombé sur cette solution:
https://www.dostips.com/forum/viewtopic.php?t=1229
Celle-ci fonctionne effectivement très bien avec l'exemple qui est donné dans le sujet.
Mais j'ai du mal à l'adapter à mon besoin.
j'ai donc mon fichier "string.txt":
Et mon fichier "source.txt":
Le code proposé:
Je comprends les grandes lignes, mais c'est au niveau de certains détails que je bloque.
Du coup, sans surprise, je ne parviens pas à atteindre le résultat espéré…
Un petit coup de main serait bienvenu ! :-)
https://www.dostips.com/forum/viewtopic.php?t=1229
Celle-ci fonctionne effectivement très bien avec l'exemple qui est donné dans le sujet.
Mais j'ai du mal à l'adapter à mon besoin.
j'ai donc mon fichier "string.txt":
b_tab1 mot
dossier site
rep arbo
fichier file
Et mon fichier "source.txt":
if '%b_tab1%' == '' goto FIN
if '%b_tab1:~0,5%' == 'SOURCE-' goto SOURCE
move %dossier%\%fichier% %dossier%\DONNEES\%b_tab1%
:SOURCE
move %rep%\%fichier% D:\SOURCE_CARTO\DONNEES\%b_tab1%
Le code proposé:
@echo off &setlocal
:processFile
>"destin.txt" type nul
for /f "delims=: tokens=1*" %%a in ('findstr /n "^" "source.txt"') do (
set "line=%%b"
call :processLine
)
goto :eof
:processLine
if not defined line (
>>"destin.txt" echo.
goto :eof
)
for /f "usebackq tokens=1* delims= " %%a in ("string.txt") do (
call set "line=%%line:%%a=%%b%%"
)
set "line=%line:^=^^%"
set "line=%line:&=^&%"
set "line=%line:<=^<%"
set "line=%line:>=^>%"
set "line=%line:|=^|%"
>>"destin.txt" echo.%line%
goto :eof
Je comprends les grandes lignes, mais c'est au niveau de certains détails que je bloque.
Du coup, sans surprise, je ne parviens pas à atteindre le résultat espéré…
Un petit coup de main serait bienvenu ! :-)
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 24 févr. 2020 à 21:53
Modifié le 24 févr. 2020 à 21:53
Salut,
J'ai concocté un truc vite fait mais ça devrait le faire :
C'est plutôt simple à comprendre et à modifier.
J'ai concocté un truc vite fait mais ça devrait le faire :
@echo off
setlocal enableextensions enabledelayedexpansion
set FichierTexteAremplacer=D:\dossier\fichier.txt
set NouveauFichierTexte=D:\fichier_new.txt
for /f "skip=2 tokens=1,* delims=]" %%A in ('find /V "" /N %FichierTexteAremplacer%') do (
SET "string=%%~B"
call:substitution b_tab1 mot
call:substitution dossier site
call:substitution rep arbo
call:substitution fichier file
echo.!string! >>%NouveauFichierTexte%
)
pause
exit
:substitution
if not "!string!"=="" (set "string=!string:%1=%2!")
goto :eof
C'est plutôt simple à comprendre et à modifier.
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
25 févr. 2020 à 09:35
25 févr. 2020 à 09:35
Salut Barnabe57,
Merci pour ton aide toujours aussi précieuse.
Ta proposition fonctionne nickel ! :-)
Ceci dit ma problématique s'est un peu intensifiée depuis hier, car maintenant il faut que je fasse la modification sur ces valeurs:
Comme tu peux le constater, on passe d'un type de variable (%xxxxx%) à un autre (&xxxx).
j'ai tenté quelques trucs avec ton code, mais ça ne marche pas très bien.
Tu as une idée ?
Merci pour ton aide toujours aussi précieuse.
Ta proposition fonctionne nickel ! :-)
Ceci dit ma problématique s'est un peu intensifiée depuis hier, car maintenant il faut que je fasse la modification sur ces valeurs:
%b_tab1% &mot
%dossier% &site
%rep% &arbo
%fichier% &file
Comme tu peux le constater, on passe d'un type de variable (%xxxxx%) à un autre (&xxxx).
j'ai tenté quelques trucs avec ton code, mais ça ne marche pas très bien.
Tu as une idée ?
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 25 févr. 2020 à 20:10
Modifié le 25 févr. 2020 à 20:10
Voilà un update :
Dans ton exemple au niveau du deuxième IF, la variable ne peut être remplacée car elle est découpée.
Je ne comprends pas trop la finalité de ce projet.
@echo off
setlocal enableextensions enabledelayedexpansion
set FichierTexteAremplacer=D:\dossier\fichier.txt
set NouveauFichierTexte=D:\fichier_new.txt
for /f "skip=2 tokens=1,* delims=]" %%A in ('find /V "" /N %FichierTexteAremplacer%') do (
SET "string=%%~B"
call:substitution "%%%%b_tab1%%%%" mot
call:substitution "%%%%dossier%%%%" site
call:substitution "%%%%rep%%%%" arbo
call:substitution "%%%%fichier%%%%" file
echo.!string!
echo.!string! >>%NouveauFichierTexte%
)
echo. & pause
exit
:substitution
if not "!string!"=="" (set "string=!string:%~1=&%2!")
goto :eof
Dans ton exemple au niveau du deuxième IF, la variable ne peut être remplacée car elle est découpée.
Je ne comprends pas trop la finalité de ce projet.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
26 févr. 2020 à 08:17
26 févr. 2020 à 08:17
Salut Barnabe,
Visiblement rien ne t'es impossible ! :-)
Ton update fonctionne nickel.
Merci encore (beaucoup) pour ton aide (je t'envoi un mp pour explication sur la finalité)
Ah dernier truc, pour le fun on va dire...
Si j'avais envie de remplacer cette partie:
%dossier%\%fichier%
Par
&arborescence
Est-ce que tu penses que ce serait possible ?
Visiblement rien ne t'es impossible ! :-)
Ton update fonctionne nickel.
Merci encore (beaucoup) pour ton aide (je t'envoi un mp pour explication sur la finalité)
Ah dernier truc, pour le fun on va dire...
Si j'avais envie de remplacer cette partie:
%dossier%\%fichier%
Par
&arborescence
Est-ce que tu penses que ce serait possible ?
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
27 févr. 2020 à 05:52
27 févr. 2020 à 05:52
Oui c'est possible, c'est le même principe, il faut juste rajouter un CALL avant les autres CALL.
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
28 févr. 2020 à 08:05
28 févr. 2020 à 08:05
Ah yes ! :
call:substitution "%%%%dossier%%%%\%%%%fichier%%%%%" arborescence
Merci beaucoup ! :-)
call:substitution "%%%%dossier%%%%\%%%%fichier%%%%%" arborescence
Merci beaucoup ! :-)
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
3 mars 2020 à 13:04
3 mars 2020 à 13:04
J'essaye depuis quelques jours (mais en vain...) d'adapter le script de Barnabe0057 pour que celui-ci soit opérationnel sur plusieurs fichiers.
C'est à dire:
set FichierTexteAremplacer=D:\dossier\*.txt
Est-ce que quelqu'un aurait une idée ?
C'est à dire:
set FichierTexteAremplacer=D:\dossier\*.txt
Est-ce que quelqu'un aurait une idée ?
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
3 mars 2020 à 21:42
3 mars 2020 à 21:42
Je te donne un indice : il faut utiliser une boucle FOR, la plus simple possible.
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
>
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 mars 2020 à 04:24
4 mars 2020 à 04:24
Il me semble avoir essayer, mais peut être pas en optant pour la solution la plus simple...
Je vais retenter demain :)
Merci
Je vais retenter demain :)
Merci
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
Modifié le 4 mars 2020 à 05:53
Modifié le 4 mars 2020 à 05:53
for %%J in (D:\dossier\*.txt) do (
...
...
...
)
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
>
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 mars 2020 à 08:35
4 mars 2020 à 08:35
En fait, je botte surtout en touche sur la génération du résultat.
En effet, il faut que chaque fichier traité (*.txt) soit renommé en (*.txt.new par exemple) mais pour l'instant je ne parviens pas à obtenir ce résultat...
En effet, il faut que chaque fichier traité (*.txt) soit renommé en (*.txt.new par exemple) mais pour l'instant je ne parviens pas à obtenir ce résultat...
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
5 mars 2020 à 09:57
5 mars 2020 à 09:57
Merci Barnabe0057, ça marche nickel ! :-)
Juste une dernière question avant de fermer le sujet.
Peux-tu stp m'expliquer ce que fait cette ligne, notamment ce qui se trouve entre les parenthèses? :
if not "!string!"=="" (set "string=!string:%~1=&%2!")
Juste une dernière question avant de fermer le sujet.
Peux-tu stp m'expliquer ce que fait cette ligne, notamment ce qui se trouve entre les parenthèses? :
if not "!string!"=="" (set "string=!string:%~1=&%2!")
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
5 mars 2020 à 13:18
5 mars 2020 à 13:18
Barnabe0057, laisse tomber ma question précédente... J'ai pris une minute à analyser ton script et j'ai heureusement compris. Le contraire aurait été un peu dommage...
En tout cas, merci encore pour ton aide précieuse ! :-)
@+
En tout cas, merci encore pour ton aide précieuse ! :-)
@+