529 votes

Comment pouvez-vous trouver et remplacer du texte dans un fichier en utilisant la ligne de commande de Windows environnement?

Je suis en train d'écrire un fichier de commandes de script à l'aide de Windows environnement de ligne de commande et que vous souhaitez modifier chaque occurrence de texte dans un fichier (ex. "FOO") à un autre (ex. "BAR"). Quelle est la façon la plus simple de le faire? Toutes les fonctions intégrées?

352voto

Rachel Points 49408

Un grand nombre de réponses ici a aidé à me diriger dans la bonne direction, cependant, aucun n'a été approprié pour moi, alors je vous poste ma solution.

J'ai Windows 7, qui est livré avec PowerShell. Voici le script que j'ai utilisé pour trouver/remplacer toutes les occurrences de texte dans un fichier:

powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File myFile.txt"

Pour l'expliquer:

  • powershell démarre powershell.exe qui est inclus dans Windows 7
  • -Command "... " est une ligne de commande arg pour powershell.exe contenant la commande à exécuter
  • (gc myFile.txt) lit le contenu de myFile.txt (gc "est l'abréviation de l' Get-Content de la commande)
  • -replace 'foo', 'bar' fonctionne tout simplement la commande remplacer pour remplacer foo avec bar
  • | Out-File myFile.txt tuyaux de sortie pour le fichier myFile.txt

Powershell.exe devrait faire partie de votre instruction de CHEMIN d'accès déjà, mais si pas, vous pouvez l'ajouter. L'emplacement de celui-ci sur ma machine est - C:\WINDOWS\system32\WindowsPowerShell\v1.0

184voto

Mike Schall Points 2921

Si vous êtes sur une version de Windows qui prend en charge .Net 2.0, je voudrais remplacer votre coque. PowerShell vous donne le plein pouvoir de .Net à partir de la ligne de commande. Il y a beaucoup de commandlets construit en. L'exemple ci-dessous permettra de résoudre votre question. Je suis en utilisant le nom complet des commandes, il y a plus court alias, mais cela vous donne quelque chose à Google pour.

(Get-Content test.txt) | ForEach-Object { $_ -replace "foo", "bar" } | Set-Content test2.txt

170voto

VonC Points 414372

Juste utilisé PÉTER ("F ind Un nd R eplace T ext" utilitaire de ligne de commande):
excellent petit logiciel gratuit pour le remplacement de texte dans un grand nombre de fichiers.

Les fichiers d'installation sont ici.

fart.exe -p -r -c -- C:\tools\perl-5.8.9\* @@APP_DIR@@ C:\tools

prévisualiser les remplacements récursive de le faire dans les fichiers de cette distribution Perl.

Seul problème: la PÉTER icône de ce site web n'est pas exactement le bon goût, raffiné, ni élégant ;)

134voto

Bill Richardson Points 455

Remplacer - Remplacer une sous-chaîne à l'aide de la chaîne de substitution Description: Pour remplacer une sous-chaîne par une autre chaîne utilisation de la chaîne fonctionnalité de substitution. L'exemple illustré ici, remplace toutes les occurrences de "teh" fautes d'orthographe " avec "la" dans la variable chaîne de caractères str.

set str=teh cat in teh hat
echo.%str%
set str=%str:teh=the%
echo.%str%

Sortie Du Script:

teh cat in teh hat
the cat in the hat

ref: http://www.dostips.com/DtTipsStringManipulation.php#Snippets.Replace

51voto

morechilli Points 4889

BatchSubstitute.bat sur dostips.com est un exemple de la recherche et de remplacement à l'aide d'un pur fichier de commandes.

Il utilise une combinaison de FOR, FIND et CALL SET.

Les lignes contenant des caractères parmi "&<>]|^ peut être traitée de manière incorrecte.


Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X