SET string=bath Abath Bbath XYZbathABC
SET modified=%string:bath=hello%
ECHO %string%
ECHO %modified%
EDITAR
Je n'ai pas vu au début que vous vouliez que le remplacement soit précédé par la lecture de la chaîne de caractères depuis un fichier.
Avec un fichier batch, vous n'avez pas beaucoup de possibilités de travailler sur des fichiers. Dans ce cas particulier, il faut lire une ligne, effectuer le remplacement, puis sortir la ligne modifiée, et ensuite... Et ensuite ? Si vous devez remplacer toutes les occurrences de 'bath' dans tout le fichier, vous devrez utiliser une boucle :
@ECHO OFF
SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (file.txt) DO (
SET "line=%%L"
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line:bath=hello!
ENDLOCAL
)
ENDLOCAL
Vous pouvez ajouter une redirection à un fichier :
ECHO !line:bath=hello!>>file2.txt
Ou vous pouvez appliquer la redirection au fichier batch. Il debe être un fichier différent.
EDIT 2
Ajout d'un basculement approprié de l'expansion retardée pour le traitement correct de certains caractères qui ont une signification spéciale avec la syntaxe du lot script, comme !
, ^
et al. (Merci, jeb !)