我正在寻找一种方法来使用Windows批处理脚本查找和replace文本文件中的多个单词。
我知道用这个bat脚本replace一个单词是可以的:
@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并从类似于这种格式的另一个文件中replacestring:
search_string1, replace_string1 search_string2, replace_string2 search_string3, replace_string3 . . .
我认为我会以某种方式逐行处理文件,并将它们parsing为两个variables(search,replace),然后将其input到上面的脚本中。 有什么想法吗? 我是Windows批处理脚本的新手,从来没有真正做过,所以介意我的新手问题。
这种类型的文本替换很慢,并且通过批处理文件执行时很容易失败。 我写了一个Batch-JScript混合脚本的FindRepl.bat程序,它不仅运行速度快,没有错误,而且还允许在数据文件的一个处理过程中执行多个替换。 JScript是一种编程语言,包含在Windows XP所有Windows版本中。 使用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程序。 将它放在前一个程序的同一个文件夹中,或者更好的是放在%PATH%中包含的一个文件夹中,所以你可以直接使用它。