Замініть текст на текстові файли з командного рядка
Дуже корисною функцією, яка відсутня у бібліотеці Windows, інструменти командного рядка - це можливість замінити текст у звичайних текстових файлах. Таку функцію можна використовувати для різноманітних практичних завдань, які виконують багато системних адміністраторів, наприклад:
- Оновлення файлів конфігурації / INI для заміни шляхів UNC.
- Масова інформація про оновлення користувача, що зберігається в файлах INI на сервері Terminal / Citrix.
- Використовуйте разом зі скриптами для розгортання даних 'templated', а потім застосуйте значення до скопійованих файлів.
Наше рішення - VBScript, який взаємодіє з функцією Visual Basic Replace. Розмістивши цей сценарій у місці у вашій змінної Windows PATH, ви маєте цю функцію у вашому розпорядженні.
Використання
Після входу в систему ви можете викликати скрипт просто за допомогою команди ReplaceText. Кілька прикладів ілюструють способи використання цього:
Замініть слово "null" на "n / a" у файлі 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 Ім'я файлу 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
Закрити
strText = Замінити (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)
Встановити oFile = oFSO.OpenTextFile (oArgs (0), 2)
oFile.WriteLine strText
Закрити
End If
додаткові нотатки
За замовчуванням Windows використовує WScript для виконання файлів VBScript (VBS). Єдиною проблемою, яку це може викликати, є будь-які помилки та / або повідомлення з скрипта з'являться як спливаючі вікна. Для інструменту командного рядка краще, щоб ці повідомлення відображалися в консолі. Є кілька способів досягти цього.
Змініть обробник файлів VBScript за замовчуванням на CScript, виконавши цю команду з командного рядка (з правами адміністратора):
CScript // H: CScript
Запустіть сценарій ReplaceText явно за допомогою команди CScript:
CScript “C: PathToReplaceText.vbs” // B Ім'я файлу OldText NewText [/ I]
Як особливий випадок, виконання ReplaceText з пакетного сценарію зазвичай передбачає CScript як двигун, який використовується незалежно від обробника за замовчуванням. Ви обов'язково захочете перевірити це, хоча перш ніж покладатися на цю функціональність.
Завантажити сценарій ReplaceText від SysadminGeek.com