Je serais toujours enclin à aller avec un outil construit à cet effet: Batch Replacer semble parfaitement correspondre à la facture.
Mais si vous êtes mort mis sur elle ... quelque chose en utilisant l'ancien repl.bat avec un analyseur multi arg ... cela devient un peu d'un monstre qui utilisant la commande DEBUG mais voici le dernier chef-d'œuvre:
code source:mmrepl.bat
@ECHO OFF
setLocal EnableDelayedExpansion
::: mmrepl - Replaces one or more strings with others, in file(s)
:::
::: syntax: mmrepl.bat $file $find $replace [$find $replace] ...
::: $file [in] - file to be parsed
::: $find [in] - string to find
::: $replace [in] - string to replace with
:::
::: * $find & $replace should be supplied in pairs, n multiples allowed
::: * $file can be a single file (eg.txt) or a file filter (*.txt)
::: you can supply any command that works with 'dir /b $file'
::: so paths and drives are also valid.
::: * $find,$replace strings can be single words, or strings enclosed
::: in quotes (which will be stripped)
if "%~1"=="" findstr "^:::" "%~f0"&GOTO:EOF
if not exist %1 echo No files matching %1 found&GOTO:EOF
::Creates the following log file:
set log=%0.log
::Temporarily creates the following files but cleans up
set replscr=TEMPDEBUG.SCR
set cmplsrc=TEMPEDLN.SCR
echo To see the work of %0.bat view the log file %log%
echo Multi-Multi Replacement (%0.bat)>%log%
echo.>>%log%
set "files=%1"
shift
set mmreplcmd=
:: Pair up find/replaces
:strippairs
set p1=%1
set p1=!p1:"=!
set p2=%2
set p2=!p2:"=!
SET mmreplcmd=%mmreplcmd%'1R%p1%' 1A '%p2%' 0D 0A
echo Replacing "%p1%" with "%p2%" >> %log%
shift
shift
if "%~1" neq "" goto:strippairs
::Build script
echo N%cmplsrc% > %replscr%
echo E CS:100 %mmreplcmd%'E' 0D 0A>> %replscr%
echo RCX >> %replscr%
echo 40 >> %replscr%
echo W >> %replscr%
echo Q >> %replscr%
DEBUG < %replscr% > NUL
::Execute on files
for /f %%a IN ('dir /b %files%') do (
echo.>>%log%
echo *** File: %%a >> %log%
EDLIN %%a < %cmplsrc% >> %log%
)
DEL %replscr%
DEL %cmplsrc%
NOTE: Je devais enlever le "est contenu" dans la recherche de repl.bat parce que vous ajoutez une esperluette à chaque titre de sorte qu'il contient toujours ... mes tests montrent que cela fonctionne très bien, mais YMMV (test).
Je ne comprends pas très bien quel est votre objectif. Pouvez-vous être un peu plus précis? – Nate
Joe vous avez demandé la même chose sur http://www.dostips.com/?t=Batch.FindAndReplace - et il semble y avoir une solution parfaitement bien postée là (ce n'est pas facile, j'utiliserais gVim, vim, ou un application spécifique de recherche/remplacement). – Rudu
J'ai exporté à partir d'Excel au texte délimité (.txt) Première ligne du fichier txt je tout ou partie des éléments suivants dans la première ligne: Programme RxBIN RXPCN RxGroup MemberID ce que je dois faire est de les faire lire comme: @Program @RxBIN @RXPCN @RxGroup @MemberID Je dois trouver de la première ligne "Program" et remplacer par "@Program" et ainsi de suite. Merci d'avance, Joe – jmituzas