data.txt中有许多行数据,每一行数据被空格分成前后两个部分,请你写一个批处理,逐一比较每一行数据的空格前的部分,如果某一行数据的空格前的部分,与其他行的空格前的部分重复次数≥3,则把此行空格后的部分保存到newdata.txt
上图是data.txt中的部分内容
下图是newdata.txt中的部分内容
上图是data.txt中的部分内容,下图是运行批处理后newdata.txt中应该呈现的数据
即空格前数据重复了三次的数据的空格后的部分- @echo off
- setlocal enabledelayedexpansion
- rem 读取文件中的每一行数据
- for /f "tokens=1,* delims= " %%a in (data.txt) do (
- set "count=0"
- rem 统计空格前的部分出现的次数
- for /f "tokens=1,* delims= " %%c in (data.txt) do (
- if "%%c"=="%%a" set /a count+=1
- )
- rem 判断是否出现次数≥3
- if !count! geq 3 (
- echo %%b>>newdata.txt
- )
- )
- echo 执行完毕,结果保存在 newdata.txt 文件中。
- pause
复制代码 复制解释:
1. `setlocal enabledelayedexpansion`:启用延迟环境变量扩展,以便在循环中使用 `!` 操作符。
2. `for /f "tokens=1,* delims= " %%a in (data.txt) do`:逐行读取 `data.txt` 文件中的数据,使用空格作为分隔符,将每行数据分成两个部分,分别存储在 `%%a` 和 `%%b` 变量中。
3. `set "count=0"`:初始化计数器变量 `count`,用于统计空格前的部分出现的次数。
4. `for /f "tokens=1,* delims= " %%c in (data.txt) do`:再次循环读取 `data.txt` 文件中的数据,用于统计空格前的部分出现的次数。
5. `if "%%c"=="%%a" set /a count+=1`:如果当前行的空格前的部分与原始行的空格前的部分相同,则计数器加 1。
6. `if !count! geq 3 (`:判断计数器是否大于等于 3。
7. `echo %%b>>newdata.txt`:如果出现次数大于等于 3,将当前行的空格后的部分追加到 `newdata.txt` 文件中。
8. `pause`:程序暂停运行,等待用户按下任意键继续。
9. `setlocal`:结束延迟环境变量扩展。 |