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

Table des matières:

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

Vidéo: Remplacer le texte dans les fichiers de texte brut à partir de la ligne de commande

Vidéo: Remplacer le texte dans les fichiers de texte brut à partir de la ligne de commande
Vidéo: Supprimer l'icone de la météo dans barre des taches de Windows 10 - YouTube 2024, Avril
Anonim

Une fonction très utile qui manque dans la bibliothèque d'outils de ligne de commande 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:

  • Mettez à 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 conjointement 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 sans distinction de casse:

FORFILES /P “C:Users” /M *.ini /S /C “Cmd /C ReplaceText @path Server=Old Server=New /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 ReplaceText @path 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 afin d'exécuter la commande par un double-clic et / ou vous permettre de la distribuer facilement à d'autres personnes.

Le scénario

'Replace Text 'Written by: Jason Faulkner 'SysadminGeek.com

'This script should be placed in a folder specified in your system's PATH variable.

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

' /I (optional) - Text matching is not case sensitive

Set oArgs = WScript.Arguments

intCaseSensitive = 0 For i = 3 to oArgs.Count-1 If UCase(oArgs(i)) = '/I' Then intCaseSensitive = 1 Next

Set oFSO = CreateObject('Scripting.FileSystemObject')

If Not oFSO.FileExists(oArgs(0)) Then WScript.Echo 'Specified file does not exist.' Else Set oFile = oFSO.OpenTextFile(oArgs(0), 1) strText = oFile.ReadAll oFile.Close

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

Set oFile = oFSO.OpenTextFile(oArgs(0), 2) oFile.WriteLine strText oFile.Close End If

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 que des erreurs et / ou des 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 manières.

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 FileName 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

Conseillé: