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

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

[复制链接]
 楼主| 发表于 2016-11-23 14:02:50 | 显示全部楼层

第二次运算错误为什么


  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
发表于 2016-11-23 22:43:16 | 显示全部楼层
我猜是没有做变量初始化
把参与计算的变量在代码开头设置成 0 试试看

评分

参与人数 1技术 +1 收起 理由
ads350668398 + 1 热心网友

查看全部评分

 楼主| 发表于 2016-11-24 08:28:38 | 显示全部楼层
我好菜鸟啊 555
 楼主| 发表于 2016-11-30 11:53:29 | 显示全部楼层
回复 17# GNU


    if /i !m! geq %aa% echo !s! %%i%     echo %%%j% !m! >>1h.txt
求困惑 %i 和%j中间输出为什么没有空格啊??
发表于 2016-12-1 11:41:07 | 显示全部楼层
回复 19# ads350668398


把以下信息分别发出来:
最新的完整代码
希望得到的结果
实际得到的结果
 楼主| 发表于 2016-12-2 08:35:57 | 显示全部楼层
本帖最后由 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
发表于 2016-12-2 10:12:43 | 显示全部楼层
回复 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
复制代码
发表于 2016-12-2 11:27:16 | 显示全部楼层
回复 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. )
复制代码
 楼主| 发表于 2016-12-2 11:50:14 | 显示全部楼层
回复 23# GNU

set kk=
    if /i !m! geq %aa% echo !s! %%i%   %%kk%   %%j% !m! >>1h.txt
这个空给KK 也能想的结果 晕了
发表于 2016-12-2 13:23:16 | 显示全部楼层
回复 24# ads350668398


    已经说过了,%%i% 这种写法是错误的。至于最终代码怎么写,你高兴就好。
 楼主| 发表于 2016-12-2 14:33:13 | 显示全部楼层
回复 25# GNU


    恩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 11:32 , Processed in 0.011753 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表