[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理如何将文本里的多行数字相加并输出总和等于指定数值时所在的行数和行内容 ...

本帖最后由 pcl_test 于 2016-11-24 08:36 编辑

逐行计算输出和值所在的行
12
10
8
4
6
15
11
12
4
6
8
1
11
7
14如果是 13
6
6


逐行相加计算和值输出特定数值的行~
例子:
目的 得到和为 129的行数 和所在的行的内容 【15行 14】
如果是13!【16行 6 并和值134】一起显示输出
!!
其实要用乘法乘法会涉及到大数这~~¥%……&
关于大数的那个帖子真真是#¥%&*%

回复 25# GNU


    恩

TOP

回复 24# ads350668398


    已经说过了,%%i% 这种写法是错误的。至于最终代码怎么写,你高兴就好。

TOP

回复 23# GNU

set kk=
    if /i !m! geq %aa% echo !s! %%i%   %%kk%   %%j% !m! >>1h.txt
这个空给KK 也能想的结果 晕了

TOP

回复 21# ads350668398

if /i !m! geq 5 echo !s! %%i%     echo %%%j% !m! >>1h.txt

for循环的控制变量应该是:
%%i
%%j
你的写法是错误的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2-6 delims= " %%i in (a.txt) do (
  4.     set /a s+=1
  5.     set /a m+=%%j
  6.     if /i !m! geq 5 echo !s! %%i %%j !m!>>1h.txt
  7. )
复制代码

TOP

回复 21# ads350668398

"delims=空格",空格已被过滤掉!
  1. @echo &setlocal enabledelayedexpansion
  2. for /f "tokens=2-6 delims= " %%i in (a.txt) do (
  3.    set /a s+=1
  4.    set /a m+=%%j
  5.   if /i !m! geq 5 echo !s! %%i %     echo %%%j% !m! >>1h.txt
  6. )
  7. pause
复制代码

TOP

本帖最后由 ads350668398 于 2016-12-2 08:54 编辑

回复 20# GNU


   a. txt原本
1 13  2
2 16  2
3 15  1
4 3  1
5 1  2
6 3  1
7 16  2
8 9  1
输出字符中间为什么没有空格啊?
  1. @echo &setlocal enabledelayedexpansion
  2. for /f "tokens=2-6 delims= " %%i in (a.txt) do (
  3.    set /a s+=1
  4.    set /a m+=%%j
  5.   if /i !m! geq 5 echo !s! %%i%     echo %%%j% !m! >>1h.txt
  6.   
  7. )  
复制代码
输出
3 151 5
4 31 6
5 12 8
6 31 9
7 162 11
8 91 12

【希望结果】
3 15 1 5
4 3 1 6
5 1 2 8
6 3 1 9
7 16 2 11
8 9 1 12

TOP

回复 19# ads350668398


把以下信息分别发出来:
最新的完整代码
希望得到的结果
实际得到的结果

TOP

回复 17# GNU


    if /i !m! geq %aa% echo !s! %%i%     echo %%%j% !m! >>1h.txt
求困惑 %i 和%j中间输出为什么没有空格啊??

TOP

我好菜鸟啊 555

TOP

我猜是没有做变量初始化
把参与计算的变量在代码开头设置成 0 试试看
1

评分人数

TOP

第二次运算错误为什么

  1. @echo &setlocal enabledelayedexpansion
  2. set /p aa=和值
  3. set /p ab=要读取的文本名
  4. echo %date%%time%
  5. setlocal enabledelayedexpansion
  6. echo %date%%time%
  7. for /f "tokens=1-6 delims= " %%i in (!ab!.txt) do (
  8.    set /a s+=1
  9.    set /a m+=%%i
  10.   if /i !m! geq %aa% echo !s! %%i% !m! >>1h.txt
  11.   
  12. )  
  13. for /f "delims=" %%1 in (1h.txt) do (
  14. echo %%1 >>1hh.txt
  15. start 1hh.txt
  16. del 1h.txt
  17.      goto a
  18. )
  19. :a
  20. ::pause&call 逐行相加4.bat&exit
复制代码
为什么第二次三次运行的时候 不能正确 运算
ab.txt
1
2
5
9
8
6
7
9
5

TOP

回复 14# GNU


    谢谢 括号里面就OK了

TOP

回复 12# ads350668398


set ii=!i! 这种写法可能无法实现你希望的目的
%%i 在1到5行代码之间有效
for循环结束之后的第六行%%i没有值,用!i!也没有值。

TOP

回复 11# ads350668398


符合条件之后就跳出for循环
  1. for /f "tokens=1-6" %%i in (!ab!.txt) do (
  2.     set /a s+=1
  3.     set /a m+=%%i
  4.     if /i !m! geq %aa% (
  5.         echo !s! %%i !m!
  6.         goto :next
  7.     )
  8. )
  9. :next
  10. pause
复制代码
1

评分人数

TOP

返回列表