本帖最后由 sairen139 于 2024-1-11 21:55 编辑
要在批处理中使用find或findstr命令查找文本文件里的汉字,必须将处理文件保存为ANSI编码
如果不想用到findstr等exe,直接利用批处理的数组法如下:
@echo off
setlocal enabledelayedexpansion
REM 读取1.txt和2.txt文件内容到数组
for /f "delims=" %%a in (1.txt) do (
set "line=%%a"
set "file1[!line!]=1"
)
for /f "delims=" %%b in (2.txt) do (
set "line=%%b"
if not defined file1[!line!] (
echo !line!>>buchong.txt
)
)
逐句分析解说以上的批处理bat如下:这段批处理脚本的功能是将两个文件1.txt和2.txt的内容读取到数组中,然后检查2.txt中的每一行是否在1.txt中,如果不在则将其追加到buchong.txt文件中。 @echo off 是关闭命令回显,这样在运行脚本时不会显示每一行命令。 setlocal enabledelayedexpansion启用延迟变量扩展,这允许在代码块中使用 ! 来访问变量。 for /f "delims=" %%a in (1.txt) do 从1.txt文件中逐行读取内容,并将每一行内容存储在变量 line 中。 set "file1[!line!]=1" 将1.txt中的每一行内容作为数组 file1 的索引,并将其值设置为1。 for /f "delims=" %%b in (2.txt) do 从2.txt文件中逐行读取内容,并将每一行内容存储在变量 line 中。 if not defined file1[!line!] 检查 file1 数组中是否存在2.txt中的当前行,如果不存在,则执行下一步。 echo !line!>>buchong.txt 将2.txt中的当前行追加到buchong.txt文件中。
|