Домашняя » как » Заменить текст в простых текстовых файлах из командной строки

    Заменить текст в простых текстовых файлах из командной строки

    Очень полезная функция, отсутствующая в библиотеке инструментов командной строки Windows, - это возможность заменять текст в текстовых файлах. Подобную функцию можно использовать для различных практических задач, которые выполняют многие системные администраторы, таких как:

    • Обновление файлов конфигурации / INI для замены путей UNC.
    • Массовое обновление пользовательской информации, хранящейся в INI-файлах на сервере Terminal / Citrix.
    • Используйте вместе со сценариями для развертывания «шаблонных» данных, а затем применяйте значения к скопированным файлам..

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

    Пользы

    Оказавшись в вашей системе, вы можете вызвать скрипт, просто используя команду ReplaceText. Несколько примеров иллюстрируют способы, которыми вы можете использовать это:

    Замените слово «ноль» на «н / д» в файле C: DataValues.csv:

    ReplaceText «C: DataValues.csv» null н / д

    Сканируйте все INI-файлы в папке C: Users (+ подкаталоги), заменяя все вхождения «Server = Old» на «Server = New», используя поиск без учета регистра:

    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 FileName 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 = Replace (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 FileName OldText NewText [/ I]

    В особом случае выполнение ReplaceText из пакетного сценария обычно подразумевает использование CScript в качестве механизма, используемого независимо от обработчика по умолчанию. Вы определенно захотите проверить это, хотя прежде чем полагаться на эту функциональность.

    Скачать сценарий ReplaceText с сайта SysadminGeek.com