标题: [数值计算] 批处理找出文本中符合规定的数? [打印本页]
作者: ngd 时间: 2022-5-19 12:59 标题: 批处理找出文本中符合规定的数?
本帖最后由 ngd 于 2022-5-19 13:00 编辑
表格中的内容大致如下:第一列是日期,第二列是库存量,第三列是每日进出量,正数是进库,负数是出库
日 存量 进出库
1 1 1
2 1 0
3 9 8
4 19 10
5 9 -10
6 1 -8
7 4 3
8 4 0
9 6 2
10 13 7
11 15 2
12 22 7
13 29 7
14 19 -10
15 11 -8
16 6 -5
17 8 2
18 8 0
19 17 9
20 27 10
21 19 -8
22 13 -6
23 10 -3
24 16 6
25 18 2
26 18 0
27 27 9
28 37 10
29 34 -3
30 27 -7
31 26 -1
找出一组数字 符合如下规律:
至少连续2日进出库小于等于3,接着连续2~4日大量进库累计大于等于15~30,再接着连续2~4日大量出库,回到大量进库前的库存量
示例中只有第1~6、7~16、这2组数字符合,输出第6、第16两日的日期和库存量
17~24这组由于连续4日出库后没有回到大量进库前的库存量所以不符合(第5日回到了进库前的库存量 但已经超出4日,所以不符合)
24~31这组由于大量出库后没有回到大量进库前的库存量所以也不符合
作者: idwma 时间: 2022-5-19 18:14
- @echo off&setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1-3" %%i in (a.txt) do (
- if defined c call :l %%i
- if not defined c if %%k geq 0 set c=%%j
- )
- pause
- goto :eof
-
- :l
- set c=
- for /f "skip=%1 tokens=1-3" %%i in (a.txt) do (
- if defined c (
- set /a d=%%i-!r!
- if !d! geq 4 if !d! leq 8 if %%k lss 0 if %%j equ !c! (
- echo %%i %%j %%k
- set c=
- goto :eof
- )
- )
- if not defined c if %%k geq 0 (
- set r=%%i
- set c=%%j
- )
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |