Как заменить текст в текстовом файле с помощью bat файла script?
Итак, я хочу создать script, который принимает 3 аргумента: путь к файлу, точное слово для замены и с чем его заменить. Как создать такую вещь?
Как правило, я хочу, чтобы у него был API:
script.bat "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use"
Ответы
Ответ 1
Используйте утилиту fnr, ее лучше, чем другая известная утилита, поскольку она может искать и заменять на основе регулярных выражений. Также для любителей пользовательского интерфейса вы можете настроить параметры в пользовательском интерфейсе, и он может генерировать строку командной строки, которая затем может использоваться в вашем script. Очень прост в использовании, даже в режиме командной строки.
Найдите здесь http://findandreplace.codeplex.com/
Также он является одним exe без каких-либо зависимостей, поэтому его легко использовать.
Пример:
fnr --cl --dir "" --fileMask "hibernate.*" --useRegEx
--find "find_str_expression" --replace "replace_string"
Ответ 2
В моей жизни я написал что-то вроде 2-х партийных скриптов, но вот как взять ввод из командной строки:
script.bat filepath find replace
%1 = filepath, %2 = find, %3 = replace
Чтобы сделать замену, сделайте что-нибудь вроде:
for /f "tokens=1,* delims=]" %%A in ('"type %1|find /n /v """') do (
set "line=%%B"
if defined line (
call set "line=echo.%%line:%~2=%~3%%"
for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
) ELSE echo.
)
(взято непосредственно из ссылки, отправленной @russ, с измененными номерами переменных.)
Я думаю, это должно сработать для вас.
Ответ 3
Быстрый поиск в Google нашел это:
http://www.dostips.com/?t=Batch.FindAndReplace