批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文本处理] [已解决]批处理如何筛选出符合规律的连续数字?

本帖最后由 ngd 于 2022-5-19 10:37 编辑

文件当中的内容大致如下:第一列是序号,后面是数字
1,2
2,3
3,2
4,7
5,7
6,8
7,3
8,-9
9,-7
10,-8
11,2
12,4
13,1
14,3
15,7
16,7
17,8
18,-8
19,-9
20,-8
21,1
22,2
找出一组数字 符合如下规律:
连续3个数小于等于4接着连续3个数大于等于7再接着连续3个数小于等于-7的一组数,示例中只有第12~20这组数字符合,输出第20个数字-8即可

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set src=nums.txt
  5. for /f "tokens=1-2 delims=," %%A in (%src%) do (
  6.   set a0=!a1!
  7.   set a1=!a2!
  8.   set a2=!a3!
  9.   set a3=!a4!
  10.   set a4=!a5!
  11.   set a5=!a6!
  12.   set a6=!a7!
  13.   set a7=!a8!
  14.   set a8=%%B
  15.   if defined a0 if !a0! leq 4 if defined a1 if !a1! leq 4 if defined a2 if !a2! leq 4 (
  16.     if defined a3 if !a3! geq 7 if defined a4 if !a4! geq 7 if defined a5 if !a5! geq 7 (
  17.       if defined a6 if !a6! leq -7 if defined a7 if !a7! leq -7 if defined a8 if !a8! leq -7 (
  18.         echo !a8!
  19.       )
  20.     )
  21.   )
  22. )
  23. endlocal
  24. pause
  25. exit /b
复制代码
1

评分人数

    • ngd: 思路很好,学习了,非常感谢!技术 + 1
微信:flashercs
QQ:49908356

TOP

再提供一种思路,借powershell用正则来匹配
  1. #&cls&powershell "iex(gc '%~0'|out-string)"&pause&exit\b
  2. $txt="C:\Users\lenovo\Desktop\nums.txt"
  3. $nums=@()
  4. gc $txt|%{$nums+=$_.split(",")[1]}
  5. $line=$nums -join "#"
  6. $pattern="([0-4]#|-\d+#){3}([7-9]#|[1-9]\d+#){3}(-[7-9]#|-[1-9]\d+#){3}"
  7. $check=[regex]::matches($line,$pattern).value
  8. ($check -split "#"|?{$_ -ne ""})[-1]
复制代码
1

评分人数

    • ngd: 也是个思路技术 + 1

TOP

返回列表