我有一个批处理文件,我想打开一个文件并对该文件进行非常简单的搜索和替换,然后保存(覆盖)它进行搜索和替换的文件。
我知道如何读取文件的第一行:
set /p file= < file.txt
Run Code Online (Sandbox Code Playgroud)
但在读取整个文件并对其进行搜索/替换的批处理方法上苦苦挣扎。
将 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)
很难给出明确的答案,因为不清楚非常简单的搜索和替换的含义,但以下是所需的所有元素:
读取文件
您可以使用以下命令逐行读取文件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)。
| 归档时间: |
|
| 查看次数: |
34186 次 |
| 最近记录: |