Una funzione molto utile che manca nella libreria di Windows degli strumenti della riga di comando è la possibilità di sostituire il testo in file di testo. Una funzione come questa può essere utilizzata per una serie di compiti pratici che molti amministratori di sistema eseguono, come ad esempio:
- Aggiorna configurazione / file INI per sostituire i percorsi UNC.
-
Aggiornamento di massa delle informazioni dell'utente memorizzate nei file INI su un server Terminal / Citrix.
- Utilizzare insieme agli script per distribuire i dati 'modelli' e quindi applicare i valori ai file copiati.
La nostra soluzione è un VBScript che si interfaccia con la funzione di sostituzione di Visual Basic. Inserendo questo script in una posizione nella variabile PATH di Windows, ora questa funzionalità è disponibile.
usi
Una volta sul tuo sistema, puoi chiamare lo script semplicemente usando il comando Sostituisci testo. Alcuni esempi illustreranno come puoi usare questo:
Sostituisci la parola "null" con "n / a" nel file C: DataValues.csv:
ReplaceText “C:DataValues.csv” null n/a
Esegui la scansione di tutti i file INI nella cartella C: Users (+ sub directories) sostituendo tutte le occorrenze di "Server = Old" con "Server = New" utilizzando una ricerca senza distinzione tra maiuscole e minuscole:
FORFILES /P “C:Users” /M *.ini /S /C “Cmd /C ReplaceText @path Server=Old Server=New /I”
Esegui la scansione di tutti i file CFG nel profilo dell'utente corrente sostituendo "p @ ssw0rd" con "PA $$ woRd" utilizzando una ricerca distinzione tra maiuscole e minuscole:
FORFILES /P “%UserProfile%” /M *.cfg /S /C “Cmd /C ReplaceText @path p@ssw0rd PA$$woRd”
Come puoi vedere qui sotto, lo script è molto semplice e può essere facilmente modificato per adattarsi a qualsiasi situazione speciale che potresti avere. In alternativa, è possibile creare copie dello script che memorizzano determinati valori in modo da poter eseguire il comando con un doppio clic e / o consentire di distribuirlo facilmente ad altri.
Il copione
'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
Note aggiuntive
Per impostazione predefinita, Windows utilizza WScript per eseguire file VBScript (VBS). L'unico problema che ciò può causare sono eventuali errori e / o messaggi dallo script appariranno come finestre popup. Per uno strumento da riga di comando, è meglio che questi messaggi vengano visualizzati nella console. Ci sono un paio di modi in cui puoi realizzare questo.
Modificare il gestore predefinito dei file VBScript in CScript eseguendo questo comando dal prompt dei comandi (con diritti di amministratore):
CScript //H:CScript
Esegui lo script ReplaceText esplicitamente usando il comando CScript:
CScript “C:PathToReplaceText.vbs” //B FileName OldText NewText [/I]
Come caso speciale, l'esecuzione di ReplaceText da uno script batch implica in genere CScript come motore utilizzato indipendentemente dal gestore predefinito. Sicuramente vorrete provarlo prima di fare affidamento su questa funzionalità.
Scarica ReplaceText Script da SysadminGeek.com