Page d'accueil » comment » Remplacer le texte dans les fichiers de texte brut à partir de la ligne de commande

    Remplacer le texte dans les fichiers de texte brut à partir de la ligne de commande

    Une fonction très utile qui manque dans la bibliothèque d'outils de ligne de commande de Windows est la possibilité de remplacer du texte dans des fichiers de texte brut. Une fonction comme celle-ci peut être utilisée pour diverses tâches pratiques exécutées par de nombreux administrateurs système, telles que:

    • Mettre à jour les fichiers de configuration / INI pour remplacer les chemins UNC.
    • Mettre à jour en masse les informations utilisateur stockées dans des fichiers INI sur un serveur Terminal / Citrix.
    • Utiliser en conjonction avec des scripts pour déployer des données basées sur un modèle, puis appliquer des valeurs aux fichiers copiés.

    Notre solution est un VBScript qui s'interface avec la fonction Visual Basic Replace. En plaçant ce script à un emplacement de votre variable Windows PATH, vous disposez maintenant de cette fonctionnalité..

    Les usages

    Une fois sur votre système, vous pouvez appeler le script en utilisant simplement la commande ReplaceText. Quelques exemples illustreront différentes manières d’utiliser ceci:

    Remplacez le mot "null" par "n / a" dans le fichier C: DataValues.csv:

    ReplaceText “C: DataValues.csv” null n / a

    Analysez tous les fichiers INI du dossier C: Utilisateurs (+ sous-répertoires) en remplaçant toutes les occurrences de «Server = Old» par «Server = New» à l'aide d'une recherche ne respectant pas la casse:

    FORFILES / P “C: Utilisateurs” / M * .ini / S / C “Cmd / C ReplaceText @path Server = Ancien serveur = Nouveau / I”

    Analysez tous les fichiers CFG du profil de l'utilisateur actuel en remplaçant «p @ ssw0rd» par «PA $$ woRd» ​​à l'aide d'une recherche sensible à la casse:

    FORFILES / P «% UserProfile%» / M * .cfg / S / C «Cmd / C RemplacerTexte @ chemin p @ ssw0rd PA $$ woRd»

    Comme vous pouvez le voir ci-dessous, le script est très simple et peut facilement être modifié pour s'adapter à toutes les situations spéciales. Vous pouvez également créer des copies du script qui codent en dur des valeurs particulières de manière à pouvoir exécuter la commande par un double-clic et / ou vous permettre de la distribuer facilement à d'autres..

    Le scénario

    'Remplacer le texte
    'Écrit par: Jason Faulkner
    'SysadminGeek.com

    'Ce script doit être placé dans un dossier spécifié dans la variable PATH de votre système.

    'Utilisation (WScript):
    'ReplaceText FileName OldText NewText [/ I]

    '/ I (facultatif) - La correspondance de texte n'est pas sensible à la casse

    Définir oArgs = WScript.Arguments

    intCaseSensitive = 0
    Pour i = 3 à oArgs.Count-1
    Si UCase (oArgs (i)) = "/ I" Alors intCaseSensitive = 1
    Suivant

    Définir oFSO = CreateObject ("Scripting.FileSystemObject")

    Si pas oFSO.FileExists (oArgs (0)), alors
    WScript.Echo "Le fichier spécifié n'existe pas."
    Autre
    Définir oFile = oFSO.OpenTextFile (oArgs (0), 1)
    strText = oFile.ReadAll
    oFichier.Fermer

    strText = Replace (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)

    Définir oFile = oFSO.OpenTextFile (oArgs (0), 2)
    oFile.WriteLine strText
    oFichier.Fermer
    Fin si

    Notes complémentaires

    Par défaut, Windows utilise WScript pour exécuter les fichiers VBScript (VBS). Le seul problème que cela peut causer est toute erreur et / ou les messages du script apparaîtront sous forme de boîtes contextuelles. Pour un outil de ligne de commande, il est préférable que ces messages soient affichés dans la console. Vous pouvez y parvenir de plusieurs façons..

    Modifiez le gestionnaire par défaut des fichiers VBScript en CScript en exécutant cette commande à partir de l'invite de commande (avec les droits d'administrateur):

    CScript // H: CScript

    Exécutez le script ReplaceText explicitement à l'aide de la commande CScript:

    CScript “C: PathToReplaceText.vbs” // B NomFichier OldText NewText [/ I]

    Dans des cas particuliers, l’exécution de ReplaceText à partir d’un script batch implique généralement CScript comme moteur utilisé, quel que soit le gestionnaire par défaut. Vous voudrez certainement le tester avant de vous appuyer sur cette fonctionnalité.

    Téléchargez un script de remplacement à partir de SysadminGeek.com