Заменить текст в простых текстовых файлах из командной строки
Очень полезная функция, отсутствующая в библиотеке инструментов командной строки 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