2014-11-17 1 views
2

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

Я знаю, заменив слово может быть сделано с этой битой сценарий:

@echo off &setlocal 
set "search=%1" 
set "replace=%2" 
set "textfile=Input.txt" 
set "newfile=Output.txt" 
(for /f "delims=" %%i in (%textfile%) do (
    set "line=%%i" 
    setlocal enabledelayedexpansion 
    set "line=!line:%search%=%replace%!" 
    echo(!line! 
    endlocal 
))>"%newfile%" 
del %textfile% 
rename %newfile% %textfile% 

Теперь я просто должны принять это один шаг дальше и кормить в процессе поиска и замены строк из другого файла, подобный следующему формат:

search_string1, replace_string1 
search_string2, replace_string2 
search_string3, replace_string3 
. 
. 
. 

Я думаю, что я какой-то образом обработать файл построчно, и разобрать их в две переменные (поиск, замена), а затем кормить, что в сценарий выше. Есть предположения? Я новичок в сценариях для Windows и никогда не делал этого раньше, так что задавайте вопросы своим новичкам.

ответ

1

Этот тип замены текста медленный и подвержен сбою при выполнении через пакетный файл. Я написал программу FindRepl.bat, которая представляет собой гибридный сценарий Batch-JScript, который работает не только быстрее, но и без ошибок, но также позволяет выполнять несколько замен, которые вы ищете, всего за один проход обработки файла данных. JScript - это язык программирования, который включен во все версии Windows из XP. Используя программу FindRepl.bat вы можете решить вашу проблему следующим образом:

@echo off 
setlocal EnableDelayedExpansion 
set "search=" 
set "replace=" 
for /F "tokens=1,2 delims=," %%a in (replacements.txt) do (
    set "search=!search!|%%a" 
    set "replace=!replace!|%%b" 
) 
set "search=!search:~1!" 
set "replace=!replace:~1!" 
< Input.txt FindRepl =search /A =replace > Output.txt 

Обратите внимание, что весь текст помещается после запятой в файле замен строка замены, включая пробелы.

Вы можете скачать программу FindRepl.bat с this site. Поместите его в ту же папку предыдущей программы или, еще лучше, в папку, включенную в% PATH%, чтобы вы могли использовать ее напрямую.

Смежные вопросы