Начална » как да » Заменете текста в обикновени текстови файлове от командния ред

    Заменете текста в обикновени текстови файлове от командния ред

    Много полезна функция, която липсва в библиотеката на Windows в инструментите на командния ред, е способността да се замени текст в обикновени текстови файлове. Такава функция може да се използва за различни практически задачи, които много системни администратори изпълняват, като:

    • Актуализирайте конфигурационните / INI файлове, за да замените UNC пътища.
    • Масова актуализирана потребителска информация, съхранявана в INI файлове на терминален / Citrix сървър.
    • Използвайте заедно със скриптове, за да разгърнете "шаблонизирани" данни и след това да приложите стойностите към копираните файлове.

    Нашето решение е VBScript, който взаимодейства с функцията Visual Basic Replace. С поставянето на този скрипт на място в променливата PATH на Windows вече имате на разположение тази функционалност.

    употреби

    След като влезете в системата, можете да извикате скрипта, като използвате командата ReplaceText. Няколко примера ще илюстрират начини, по които можете да използвате това:

    Заменете думата „null“ с „n / a“ в файла C: DataValues.csv:

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

    Сканирайте всички INI файлове в папката C: Потребители (+ под директории), заменяйки всички появявания на „Сървър = Стар“ с „Сървър = Ново“, използвайки търсене без значение:

    FORFILES / P “C: Потребители” / M * .ini / S / C “Cmd / C ReplaceText @path Server = Стар сървър = Ново / I”

    Сканирайте всички CFG файлове в профила на текущия потребител, като замените „p @ ssw0rd“ с „PA $$ woRd“, като използвате търсене, чувствително към малки и големи букви:

    FORFILES / P “% UserProfile%” / M * .cfg / S / C “Cmd / C ReplaceText @path p @ ssw0rd PA $$ woRd”

    Както можете да видите по-долу, скриптът е много прост и лесно може да бъде променен, за да се приспособи към всякакви специални ситуации, които може да имате. Алтернативно, може да искате да създадете копия на скрипта, които да кодират конкретни стойности, така че да можете да изпълните командата с двойно кликване и / или да ви позволи лесно да я разпространявате на други хора.

    Скриптът

    'Замяна на текст
    „Написано от: Джейсън Фолкнер
    "SysadminGeek.com

    Този скрипт трябва да бъде поставен в папка, посочена в променливата PATH на вашата система.

    "Използване (WScript):
    'ReplaceText Име на файла OldText NewText [/ I]

    '/ I (незадължително) - Съвпадението на текст не е чувствително към малки и главни букви

    Задайте oArgs = WScript.Arguments

    intCaseSensitive = 0
    За i = 3 до oArgs.Count-1
    Ако UCase (oArgs (i)) = "/ I" Тогава intCaseSensitive = 1
    Следващия

    Задайте oFSO = CreateObject ("Scripting.FileSystemObject")

    Ако не е oFSO.FileExists (oArgs (0)) След това
    WScript.Echo "Указаният файл не съществува."
    още
    Задайте oFile = oFSO.OpenTextFile (oArgs (0), 1)
    strText = oFile.ReadAll
    oFile.Close

    strText = Замяна (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)

    Задайте oFile = oFSO.OpenTextFile (oArgs (0), 2)
    oFile.WriteLine strText
    oFile.Close
    Край Ако

    допълнителни бележки

    По подразбиране Windows използва WScript за изпълнение на VBScript (VBS) файлове. Единственият проблем, който това може да предизвика е грешки и / или съобщения от скрипта ще се появят като изскачащи кутии. За инструмента на командния ред най-добре е тези съобщения да се показват в конзолата. Има няколко начина, по които можете да постигнете това.

    Променете манипулатора по подразбиране на VBScript файлове в CScript, като изпълните тази команда от командния ред (с права на администратор):

    CScript // H: CScript

    Изпълнете скрипта ReplaceText, като използвате командата CScript:

    CScript “C: PathToReplaceText.vbs” // B Име на файл OldText NewText [/ I]

    Като специален случай, изпълнението на ReplaceText от пакетния скрипт обикновено предполага CScript като използван двигател, независимо от манипулатора по подразбиране. Определено ще искате да тествате това, преди да разчитате на тази функционалност.

    Изтеглете ReplaceText Script от SysadminGeek.com