Script Batch pour rechercher et remplacer une chaîne de caractères dans un fichier texte sans la création d'un supplément de fichier de sortie pour stocker le fichier modifié
J'ai écrit un script batch pour rechercher et remplacer une chaîne de caractères dans un fichier texte. Voici mon script.
@echo off &setlocal
set "search=%1"
set "replace=%2"
set "textfile=Input.txt"
set "newfile=Output.txt"
(for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))>"%newfile%"
del %textfile%
rename %newfile% %textfile%
Je suis en mesure de remplacer le mot correctement.
Mais je ne veux pas créer Output.txt et puis renommez le fichier d'origine..
Merci de m'aider pour l'édition d'un fichier texte sans rediriger la sortie vers un nouveau fichier..
Il n'est pas possible.
Cant nous ouvrir le fichier en mode d'édition et de le modifier lors de la lecture? Je n'ai pas la moindre idée sur ce..Laissez-moi savoir si ses possible..
Vous pouvez également utiliser conRechercher Et Remplacer du Texte) utilitaire de ligne de commande pour effectuer cette tâche.
Cant nous ouvrir le fichier en mode d'édition et de le modifier lors de la lecture? Je n'ai pas la moindre idée sur ce..Laissez-moi savoir si ses possible..
Vous pouvez également utiliser conRechercher Et Remplacer du Texte) utilitaire de ligne de commande pour effectuer cette tâche.
OriginalL'auteur ananth joshi | 2014-04-15
Vous devez vous connecter pour publier un commentaire.
for /f
permettra de lire toutes les données (généré par letype
comamnd) avant de commencer à les traiter. Dans le sous-processus a commencé à exécuter latype
, nous incluons une redirection overwritting le fichier (alors qu'il est vide). Une fois ledo
clause commence à s'exécuter (le contenu du fichier en mémoire pour être traitées) la sortie est ajoutée au fichier.il efface le contenu du fichier. Il n'est rien de plus que
break > file
, juste une commande sans sortie redirigée vers le fichier. Le contenu du fichier est effacée. Les signes avant le&
et>
sont à échapper à l'intérieur de lafor /f
de commande.Encore une requête..j'ai exécuté le script..C'est de prendre près de 7 minutes pour remplacer un mot dans un 12 MO fichier..Peut-on le rendre plus rapide, par l'emploi de trouver ou de commande findstr?
supprimer la
set "line=!line:%search%=%replace%!"
et modifier la ligne suivante dans>>"%textFile%" echo(!line:%search%=%replace%!
.il évite un
echo is off
de sortie si, après avoir fait de la remplacer, il n'y a aucune données de sortie.OriginalL'auteur MC ND