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