使用 Windows 批处理编程在文件中搜索和替换

Chr*_*eld 3 batch-file

我有一个批处理文件,我想打开一个文件并对该文件进行非常简单的搜索和替换,然后保存(覆盖)它进行搜索和替换的文件。

我知道如何读取文件的第一行:

set /p file= < file.txt
Run Code Online (Sandbox Code Playgroud)

但在读取整个文件并对其进行搜索/替换的批处理方法上苦苦挣扎。

Joh*_* A. 6

将 filename.txt 和 search1/replace1 替换为您的文件名和正确的搜索/替换字符串或文本。

 Echo off
    set "textfile=filename.txt"
    set "tempfile=filenametemp.txt"
    (for /f "delims=" %%i in (%textfile%) do (
        set "line=%%i"
        setlocal enabledelayedexpansion
        set "line=!line:search1=replace1!"
        echo(!line!
        endlocal
    ))>"%tempfile%"
    del %textfile%
    rename %tempfile%  %textfile%
Run Code Online (Sandbox Code Playgroud)


mar*_*pet 5

很难给出明确的答案,因为不清楚非常简单的搜索和替换的含义,但以下是所需的所有元素:

读取文件

您可以使用以下命令逐行读取文件for /f:

for /f %%a in (myfile.txt) do (
    echo %%a
)
Run Code Online (Sandbox Code Playgroud)

替换文本

这是我知道如何替换文本出现的一种方法:

SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in (myfile.txt) do (
    SET s=%%a
    SET s=!s:stringtoreplace=replacementstring!
    echo !s!
)
Run Code Online (Sandbox Code Playgroud)

这将输出所有行myfile.txt并将stringtoreplace替换为replacementstring。

覆盖文件

您可以考虑先写入一个新的临时文件,然后用新的临时文件替换原始文件。

通过上面的例子,就像在语句>>yourtempfilename.txt后面添加一样简单echo。

过滤文件的行

如果您只是想从文件中删除某些行,您也可以考虑命令findstr( help findstr)。